当我执行这个程序时,我得到一个段错误,不知道为什么。 它应该返回输入的阶乘(?),只要它大于0。
#include <stdio.h>
int factorial(int input)
{
if (input > 0)
{
return input * factorial(input--);
}
else
{
return 1;
}
}
int main()
{
printf("%d", factorial(23));
return 0;
}
答案 0 :(得分:2)
factorial(input--)
没有按照您的想法行事。使用factorial(input-1)
。
这是page that documents the post-decrement operator,应该有助于正确使用它。您从不必须使用它。您可以随时使用+
,-
和=
(作业)执行您的操作。
您的程序正在产生细分错误,因为在您编写错误后,factorial(23)
会调用factorial(23)
,从而产生stack overflow。