在 C++ 中使用递归获取字符串类实例的长度

我正在编写一个递归函数来查找 C++ 中字符串的长度。这是一个简单的问题,我用 C++ 写了两个函数,用 Python 写了一个。


第一的


int length(char *str) {

    if (*str == '\0')

        return 0;

    return 1 + length(str + 1);

}

第二


int get_size(string str, int i) {

if (str[i] == '\0')

    return 0;

return 1 + get_size(str, i + 1);

}


Python


def length(string):

    if not string:

        return 0

    return 1 + length(string[1:])

他们都工作正常。但是,我想要的是重写第二个函数,这样就不需要integer像第一个那样的参数。除了类实例之外,我也不想使用变量static和global任何库函数。string如何将第二个函数重写为第一个函数?


手掌心
浏览 186回答 1
1回答

SMILET

相当于 python 的 C++string[1:]是std::string::substr:int get_size(std::string str) {    if (str.empty()) // end of recursion        return 0;    // call recursively with substr from second to last character.    return 1 + get_size(str.substr(1)); }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python