【发布时间】:2021-02-24 23:12:37
【问题描述】:
#include <stdio.h>
int _strlen_recursion(char *s);
int main(void)
{
int n;
n = _strlen_recursion("Corbin Coleman");
printf("%d\n", n);
return (0);
}
int _strlen_recursion(char *s)
{
int count = 0;
if( s[0] == '\0')
{
return (count);
}
else
{
s++;
count++;
_strlen_recursion(s);
return (count);
}
}
这是我的代码。当我运行它时,我得到 1 作为我的答案。使用 python 导师后,我意识到这是因为我的变量一直被设置回 0。我尝试了各种方法来修复它,观看了 YouTube 视频并查看了网上发布的其他问题,但我不知道如何解决修理它。我是编程新手,如果有人能解释发生了什么以及如何解决它,我将不胜感激。
我的代码的重点是打印出字符串中的字符总数。我不能使用标准库或全局变量。
预期输出:
14
【问题讨论】:
-
这不是递归的好用法——它不可扩展并且可能导致深度递归超出堆栈。所以显而易见的问题 - 您这样做是出于学习原因,还是您认为这实际上是实现所需结果的最佳方式?
-
顺便说一句,以下划线开头的标识符保留在文件范围的命名空间中。
-
学习理由!今天是我学习递归的第一天。所以我正在做分配给我的基本递归问题。
标签: c recursion initialization return-value