当我运行以下C程序时,编译器显示分段错误(核心转储).我不明白为什么会这样,我怎么能检索这段代码.
#include <stdio.h>
int power(int x, int n)
{
if (n = 0)
return 1;
else
return x * power (x, n - 1);
}
int main(void)
{
int x=3,n=4;
printf("the answer is:%d\n",power(3,4));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
if (n = 0)
是无效的递归阻断剂,因为它分配 0
到n
和计算结果为0
.因此,目前该函数无限地调用自身,这会导致您的平台上出现核心转储.
你是说if (n == 0)
,还是更好if (!n)
?
合理的编译器会在这种情况下发出警告.你把它们关掉了吗?