关于递归

a64571097 2009-06-14 11:58:43
#include<iostream>
using namespace std;
int factr(int n);
int fact(int n);
int main(){
cout<<"4 factorial is"<<factr(4)<<endl;
cout<<"4 factorial is"<<fact(4)<<endl;
return 0;}
int factr(int n){
int answer;
if(n==1) return(1);
answer=factr(n-1)*n;
cout<<answer<<endl;
return(answer);
}
int fact(int n)
{
int t,answer;
answer=1;
for(t=1;t<=n;t++)answer=answer*(t);
return(answer);
}

各位 为什么answer=factr(n-1)*n; 第一次是2

做为4被调用 那应该是12才对啊
...全文
33 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hz_yck 2009-06-15
  • 打赏
  • 举报
回复
因为是先递归,再输出,外层的输出要在内层的递归返回以后才出现,所以先输出最内层的,也就是factr(1)*2
zhouzhi733 2009-06-15
  • 打赏
  • 举报
回复
这程序的答案 也不是12 呀 因该是24吧 ((factr(1)*2)*3)*4=24 是一种阶乘算法 由低到高 不断相乘
a64571097 2009-06-15
  • 打赏
  • 举报
回复
可是结果为什么会叠加呢 跟N-1完全是反向的

65,210

社区成员

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

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