我正在学习C编程递归并进行一项活动,但是我被困住了

时间:2019-07-16 18:59:30

标签: c recursion

也许这是一个简单的问题。我刚开始独自学习C。 有一个断点 sumOfDigits函数中的“ if”。 但是我不知道为什么它是一个断点...

#include <stdio.h>

int sumOfDigits(int);

int main(int argc, const char * argv[]) {
    int N;

    scanf("%d", &N);
    N = sumOfDigits(N);
    printf("%d", N);

    return 0;
}

int sumOfDigits (int num)
{
    if (num<10)
        return num;
    else
    {
        num = sumOfDigits(num)/10;
    return num + num%10;
}
}

它像这样显示我。

线程1:断点1.1

2 个答案:

答案 0 :(得分:0)

更改

num = sumOfDigits(num)/10;

num = sumOfDigits(num/10);

示例中的num变量没有减少,该函数将自行调用直到内存用完,并且您将遇到分段错误错误。

答案 1 :(得分:-1)

我认为您已经在IDE中设置了一个断点。 而且我认为您缺少很多括号。

int sumOfDigits (int num)
{
    if (num<10) {
        return num;
    } else {
        num = sumOfDigits(num)/10;
    }
    return num + num%10;
}