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

Recursive function to find string length returning 6 too high?

本文关键字:递归函数 字符串 返回 查找      更新时间:2023-10-16

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

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

函数可以按照以下方式

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

对于您的函数,则不需要使用全局变量n,并且该函数的每个下一次递归调用的参数都应该是

myStrlen(string + 1)

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