高手们请教一个栈溢出的问题
看了一个叫“C语言竞赛 数学不好的别进”的帖子
里面用了递进感觉 那个逻辑真是太精妙了
我用了递进的方法计算10!
程序递进到fn(1)开始返回,到fn(2)的时候 程序报错说是“stack flow”应该是栈溢出吧
这个问题怎么解决啊
[code=C/C++][/code]
#include <IOSTREAM>
#include <stdio.h>
int fn(int n) //递进计算n!
{
if(n==1)
return n;
fn(n-1);
return n*fn(n);
}
void main()
{
int a=10;
int b;
b=fn(a);
printf("%d\n",b);
getchar();
}
[解决办法]
怎么感觉这儿不大对
int fn(int n) //递进计算n!
{
if(n==1)
return n;
fn(n-1);
return n*fn(n);
}
是不是?
int fn(int n) //递进计算n!
{
if(n==1)
return n;
return n*fn(n-1);
}
[解决办法]
return n*fn(n);
这一句导致了无限递归
[解决办法]
int fn(int n) //递进计算n!{if(n==1)return n;fn(n-1);return n*fn(n);}修改为int fn(int n) //递进计算n!{if(n==1)return n;elsereturn n*fn(n-1);}