递归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,程序不显示的主要内容,如果未能解决你的问题,请参考以下文章

如何有效地分析相互递归函数

在 C 中创建和显示链表:程序显示不正确

DEV C++如何显示运行结果

C#WinForm程序树形表显示

C#winform文本框控件程序中不显示( 页面设计中显示),这是啥情况?

C 和 GTK3 - 使用 Glade 时不显示应用程序菜单