【问题标题】:recursion c, program does not display递归c,程序不显示
【发布时间】:2026-01-01 02:55:02
【问题描述】:

我在这个程序中遇到了一个问题,谁能告诉我,我做错了什么,我给它输入后程序不会显示任何东西。 (代码是关于输入数字的总和#example 12345 = 15)

#include<stdio.h>
int sum(int num);

int sum(int num){
int total=0;
if(sum==0){
    return total;
}
else{
    total+=num%10;
    num/=10;
    return sum(num);
}
}

int main()
{
int num,k;
printf("Enter 5 positive number: ");
scanf("%d",&num);
printf("Sum is: %d",sum(num));
}

【问题讨论】:

  • 您的total 在每次调用时都会初始化为0
  • 好的,谢谢,但仍然没有显示其停留在光标上的符号
  • 先写递归规则。在纸上。

标签: c recursion


【解决方案1】:

在您的代码中,每次调用函数时,总数都会被初始化为零。并且名为 sum 的变量未初始化。只需将 sum==0 更改为 num==0。我还给出了对数字的数字求和的逻辑。

【讨论】:

    【解决方案2】:

    您只需将条件从sum==0 更改为num==0。它现在会打印一些东西。但是,您程序的逻辑仍然是错误的。您可以将 sum 函数更改为此。

    int sum(int num){
        if(num==0) {
            return 0;
        }
        return num % 10 + sum(num/10);
    }
    

    您可以尝试通过堆栈了解更多关于递归的信息,因为递归基本上只是堆栈。

    【讨论】:

      【解决方案3】:

      这是一个经验法则,只要您有一个不间断的递归程序,请尝试验证您的基本案例。

      在这里,您正在验证 sum 函数而不是 num 参数。 C 编译器允许您这样做,因为 C 中的函数是指针,而指针将地址保存为数值。

      【讨论】:

      • 哦,谢谢你,我真是个白痴。