在我的递归函数中一遍又一遍地初始化我的变量

#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。


以上是在我的递归函数中一遍又一遍地初始化我的变量的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>