我必须编写一个程序来使用递归来查找char数组的长度,但是我的程序返回的值比数组长度多6。
int n = 0;
int myStrlen(char string[]){
if (string[n] == '\0') {
return 0;
}
else{
++n;
return 1 + myStrlen(string);
}
}
答案 0 :(得分:3)
该功能可以按以下方式查看
size_t myStrlen( const char string[] )
{
return *string ? 1 + myStrlen( string + 1 ) : 0;
}
至于你的函数,则不需要使用全局变量n
,并且该函数的每个下一个递归调用的参数应为
myStrlen(string + 1)
考虑到该函数计算字符串的长度,该字符串是以零结尾的字符序列。如果字符数组不包含字符串,则行为未定义。