为什么在执行此 C 程序时会出现分段错误?
Why do i get a segmentation fault when executing this C program?
当我执行这个程序时,我得到了一个段错误并且不知道为什么。
它应该 return 输入的阶乘 (?) 只要它大于 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;
}
factorial(input--)
并不像您认为的那样。使用 factorial(input-1)
.
这是一个 page that documents the post-decrement operator,应该有助于正确使用它。您永远不会必须使用它。你总是可以用 +
、-
和 =
(赋值)做你想做的事。
您的程序产生了分段错误,因为正如您编写的那样,factorial(23)
调用了 factorial(23)
,导致了 stack overflow.
当我执行这个程序时,我得到了一个段错误并且不知道为什么。 它应该 return 输入的阶乘 (?) 只要它大于 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;
}
factorial(input--)
并不像您认为的那样。使用 factorial(input-1)
.
这是一个 page that documents the post-decrement operator,应该有助于正确使用它。您永远不会必须使用它。你总是可以用 +
、-
和 =
(赋值)做你想做的事。
您的程序产生了分段错误,因为正如您编写的那样,factorial(23)
调用了 factorial(23)
,导致了 stack overflow.