递归函数中的分段错误
Segmantation fault in recursive function
我正在尝试通过 recursively.My 函数找到阶乘,但为什么我在输入 -1 时收到“分段错误(核心已转储)”。
#include <stdio.h>
int fak(int number);
int main(){
int i;
printf("give me an integer: ");
scanf("%d",&i);
printf("factorial: %d\n",fak(i));
return 0;
}
int fak(int number){
if(number == 1 || number == 0){
return 1;
}
return number * fak(number - 1);
}
回答问题:你会得到堆栈溢出,因为你的递归方法永远不会正常结束(查看所有评论)。
如果你输入-1,该方法将用-2再次调用。
这取决于你的堆栈大小,它何时会崩溃。
您可以将您的条件更改为:
if(number <= 1){
return 1;
}
除此之外:-1 的阶乘不存在。
我正在尝试通过 recursively.My 函数找到阶乘,但为什么我在输入 -1 时收到“分段错误(核心已转储)”。
#include <stdio.h>
int fak(int number);
int main(){
int i;
printf("give me an integer: ");
scanf("%d",&i);
printf("factorial: %d\n",fak(i));
return 0;
}
int fak(int number){
if(number == 1 || number == 0){
return 1;
}
return number * fak(number - 1);
}
回答问题:你会得到堆栈溢出,因为你的递归方法永远不会正常结束(查看所有评论)。
如果你输入-1,该方法将用-2再次调用。 这取决于你的堆栈大小,它何时会崩溃。
您可以将您的条件更改为:
if(number <= 1){
return 1;
}
除此之外:-1 的阶乘不存在。