首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我在递归函数中没有得到任何输出

我在递归函数中没有得到任何输出
EN

Stack Overflow用户
提问于 2021-10-24 07:35:43
回答 1查看 62关注 0票数 0

//这是一个用于在C语言中查找位数和的递归函数//我在IDE中没有得到任何输出。

代码语言:javascript
复制
int dsum(int n)
{
    int a, r;
    r = n % 10;
    a = r + dsum(n / 10);
    return a;
}
int main()
{
    int a;
    a= dsum(12345);
    printf("%d",a);
    return 0;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-24 07:42:14

递归函数应该总是有一个基本情况作为最终的返回,在这种情况下,当n等于0时,这意味着所有的数字都被相加(当msb数字除以10时,结果是0)。然后,您将获得返回,它将使用当前lsb数字(或最右边的数字)的结果调用函数+输入为n/10的函数结果

代码语言:javascript
复制
int dsum(int n)
{
    if (n == 0) {
        return 0;
    }
    return n % 10 + dsum(n / 10);
}

int main()
{
    int a;
    a = dsum(12345);
    printf("%d",a);
    return 0;
}

顺便说一句,我还建议研究一下尾递归:https://en.wikipedia.org/wiki/Tail_call

在这个场景中,它可能看起来像这样:

代码语言:javascript
复制
int dsum_tail_recursion(int n, int sum)
{
    if (n == 0) {
        return sum;
    }
    return dsum_tail_recursion(n/10, n%10 + sum)
}

int main()
{
    int a;
    a = dsum_tail_recursion(12345, 0); // 0 is the sum start value
    printf("%d",a);
    return 0;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69694714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档