【发布时间】:2017-11-29 13:06:48
【问题描述】:
下面是代码,请准确指出我错在哪里。 我已经声明,定义了函数,我不知道哪里出了问题。
#include<stdio.h>
int factorial(int b); /* Declaration */
int main()
{
int num;
printf("Enter number: ");
scanf("%d", &num);
printf("%d",factorial(num));
return 0;
}
int factorial(int b) /*Function definition*/
{
return b*factorial(b-1);
}
【问题讨论】:
-
请不要发送带有标签的垃圾邮件。这不是 C#
-
你做了哪些调试尝试?提示:
factorial(0)的值应该是多少? -
相关,根本问题是本网站including this one 上许多递归问题的直接重复。您没有停止递归链的基本情况。无关,即使在您解决此问题后,我建议您考虑输入
-1(或任何负值)的人会出现什么不适,这完全符合您的输入要求。邪恶的东西,来了。 -
"i don't know what is wrong"- 首先确定您认为有什么问题的原因。您有什么实际的问题迹象? -
要自己找出问题所在,您可以在程序运行时打印变量以查看程序是否按照您的预期执行。例如,您可以将
printf("factorial called with %d\n", b);添加到factorial函数的开头,您会看到问题所在。使用调试器单步执行代码会更好。