递归c,程序不显示
Posted
技术标签:
【中文标题】递归c,程序不显示【英文标题】:recursion c, program does not display 【发布时间】:2022-01-11 23:07:33 【问题描述】:我在这个程序中遇到了一个问题,谁能告诉我,我做错了什么,我给它输入后程序不会显示任何东西。 (代码是关于输入数字的总和#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
。
好的,谢谢,但仍然没有显示其停留在光标上的符号
先写递归规则。在纸上。
【参考方案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 中的函数是指针,而指针将地址保存为数值。
【讨论】:
哦,谢谢你,我真是个白痴。以上是关于递归c,程序不显示的主要内容,如果未能解决你的问题,请参考以下文章