在c++的递归函数中fac(n)=fac(n-1)*n错在哪里
答案:4 悬赏:80
解决时间 2022-01-01 01:00
- 提问者网友:时间却是纷扰
- 2021-12-31 13:51
在c++的递归函数中fac(n)=fac(n-1)*n错在哪里
最佳答案
- 二级知识专家网友:野性且迷人
- 2021-12-31 14:41
应该是无限返回了。你求的是n!吧。
改为:
int fac(int n)
{
if(n==1)//当n==1时,返回的是一个值而不是函数
return n;
if(n>1)
return fac(n)=fac(n-1)*n;//返回函数递推,当n==1时断开
}
改为:
int fac(int n)
{
if(n==1)//当n==1时,返回的是一个值而不是函数
return n;
if(n>1)
return fac(n)=fac(n-1)*n;//返回函数递推,当n==1时断开
}
全部回答
- 1楼网友:厭世為王
- 2021-12-31 18:32
神马也别说,楼主采纳我吧
int fac(int n)
{
if(n==0||n==1)
return 1;
else
return fac(n-1)*n;
}
- 2楼网友:心痛成瘾
- 2021-12-31 17:36
应该是:
if(n==0)fac=1;
else fac(n)=fac(n-1)*n;
不能漏掉递归结束条件。
- 3楼网友:星痕之殇
- 2021-12-31 16:12
么代码,一般都错在没有判定条件,从而使函数无法退出结束递归,应该这样写
double fac(int n)
{
double f;
if (n==0||n==1)
f=1;
else
f=fac(n-1)*n;
return f;
}类似的还有斐波那契数列
int fibo(int n)
{
if(n==1)
return 1;
else if(n==2)
return 1;
else
return fibo(n-1)+fibo(n-2);
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯