一道递归调用问题?

Enna 2008-10-21 09:57:29
#include "iostream.h"
int fac(int n)
{
if(n==1||n==2)
fac(n)=1;
else
fac(n)=fac(n-1)+fac(n-2);
return fac(n);
}
void main()
{
int m;int i;
cin>>m;
for(i=1;i<=m;i++)
cout<<fac(i)<<endl;

}
请问各位有何问题?为什么编译总有两个错误?
...全文
118 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
太乙 2008-10-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 Wayo2008 的回复:]
为什么return fac(n); 不对啊?
[/Quote]

呵呵,对,也是,没看具体过程!



#include "iostream.h"
int fac(int n)
{
if(n==1||n==2)
return 1;
else
return fac(n-1)+fac(n-2);
// return fac(n);
}
void main()
{
int m;int i;
cin>>m;
for(i=1;i <=m;i++)
cout <<fac(i) <<endl;

}



lz最好别用递归,毕竟你要输出每一次的结果嘛!用非递归算法呗!


太乙 2008-10-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 Wayo2008 的回复:]
是啊,以前学VB的。
[/Quote]

呵呵,难怪!!
CA_HA_M 2008-10-21
  • 打赏
  • 举报
回复
不好意思,你指的是3楼给的代码吧,在这段代码中,return fac(n);这条语句根本不会被执行,在上面的if语句中,不管结果是真是假,都会执行return,函数就会结束.
CA_HA_M 2008-10-21
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 Wayo2008 的回复:]
为什么return fac(n); 不对啊?
[/Quote]
return fac(n); 并没有错,是因为当
if(n==1||n==2)
fac(n)=1; //错在这里,1.没有返回2函数不能被赋值.3改成 renturn 1;就对了
Enna 2008-10-21
  • 打赏
  • 举报
回复
为什么return fac(n); 不对啊?
Enna 2008-10-21
  • 打赏
  • 举报
回复
是啊,以前学VB的。
太乙 2008-10-21
  • 打赏
  • 举报
回复
lz以前学vb的??
wuyu637 2008-10-21
  • 打赏
  • 举报
回复
int fac(int n)
{
if(n==1||n==2)
return 1;
else
return fac(n-1)+ fac(n-2);
}
void main()
{
int m;int i;
cin>>m;
for(i=1;i <=m;i++)
cout << fac(i) <<endl;

}
太乙 2008-10-21
  • 打赏
  • 举报
回复
#include "iostream.h" 
int fac(int n)
{
if(n==1||n==2)
return 1;
else
return fac(n-1)+fac(n-2);
return fac(n);
}
void main()
{
int m;int i;
cin>>m;
for(i=1;i <=m;i++)
cout <<fac(i) <<endl;

}
lunarfan 2008-10-21
  • 打赏
  • 举报
回复
fac(n)=1把这句该为return 1;
lunarfan 2008-10-21
  • 打赏
  • 举报
回复
不知道你fac函数是用来做什么的,而且fac(n)=1是什么东西

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧