递归函数找到返回6的字符串长度太高?

时间:2015-12-16 22:21:49

标签: c++ recursion

我必须编写一个程序来使用递归来查找char数组的长度,但是我的程序返回的值比数组长度多6。

int n = 0;

int myStrlen(char string[]){

    if (string[n] == '\0') {
        return 0;
    }
    else{
        ++n;
        return 1 + myStrlen(string);
    }
}

1 个答案:

答案 0 :(得分:3)

该功能可以按以下方式查看

size_t myStrlen( const char string[] )
{
    return *string ? 1 + myStrlen( string + 1 ) : 0;
}

至于你的函数,则不需要使用全局变量n,并且该函数的每个下一个递归调用的参数应为

myStrlen(string + 1)

考虑到该函数计算字符串的长度,该字符串是以零结尾的字符序列。如果字符数组不包含字符串,则行为未定义。