在我的递归函数中一遍又一遍地初始化我的变量
#include <stdio.h>
int _strlen_recursion(char *s);
int main(void)
{
int n;
n = _strlen_recursion("Corbin Coleman");
printf("%dn", n);
return (0);
}
int _strlen_recursion(char *s)
{
int count = 0;
if( s[0] == ' ')
{
return (count);
}
else
{
s++;
count++;
_strlen_recursion(s);
return (count);
}
}
这是我的代码。当我运行它时,我得到 1 作为我的答案。使用python导师后,我意识到这是因为我的变量一直被设置回0。我尝试了各种方法来修复它,观看YouTube视频并查看在线发布的其他问题,但我不知道如何解决修理它。我是编程新手,如果有人能解释发生了什么以及如何解决它,我会很感激。
我的代码的重点是打印出字符串中的总字符数。我不能使用标准库或全局变量。
预期输出:
14
回答
变量count是函数的局部变量,甚至是特定级别的递归。您不能在递归级别之间共享它。
您必须使用全局变量或count作为参数传递。就个人而言,我会简单地将其删除。
只需返回 0 表示空字符串或 1 加上字符串长度短一个字母:
int _strlen_recursion(char *s) {
if (s[0] == 0) return 0;
return 1 + _strlen_recursion(s + 1);
}
按预期返回 14。