大家帮忙看看这个递归调用的顺序是怎样的。。

zh6335901 2011-04-20 10:23:36
#include<iostream>
using namespace std;

int main()
{
void print(int j,int i);
int j=0,i=0;
print(j,i);
return 0;
}

void print(int j,int i)
{
if(j>=2)return;
j=j+i;
i++;
cout<<j<<" ";
print(j,i);
print(i,j);
cout<<i<<" ";
}

当注释掉print(i,j);和cout<<i<<" ";输出的是0 1 3
当只注释掉cout<<i<<" ";输出的是0 1 3 1 2 2
都不注释时输出的是0 1 3 3 2 1 2 2 2 2 1 1
我现在想知道cout<<i<<" ";是什么时候执行的。。。。有高手回答吗
...全文
82 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fight_flight 2011-04-21
  • 打赏
  • 举报
回复
cout<<"("<<i<<")"<<" ";
这样不就知道哪些是了
神之言 2011-04-21
  • 打赏
  • 举报
回复
print(j,i)(0,0)->j,i(0,1)->输出0
print(j,i)(0,1)->j,i(1,2)->输出1
print(j,i)(1,2)->j,i(3,3)->输出3
print(j,i)(3,3)->return
print(i,j)(3,3)->return
cout<<i<<" ";
阿青哥 2011-04-21
  • 打赏
  • 举报
回复
#include<iostream>
using namespace std;

int main()
{
void print(int j,int i,int l);
int j=0,i=0;
int t = 0;
print(j,i,t);
return 0;
}

void print(int j,int i,int l)
{
cout<<"level="<<l<<":";
if(j>=2)return;
j=j+i;
i++;
cout<<"j="<<j<<" "<<endl;
print(j,i,l+1);
print(i,j,l+1);
cout<<"i="<<i<<" "<<endl;
}
检查输出中的level就知道是第几层递归了。
GoonYangXiaofang 2011-04-21
  • 打赏
  • 举报
回复
一层一层分析即可

#include<iostream>
using namespace std;

int main()
{
void print(int j,int i);
int j=0,i=0;
print(j,i);
return 0;
}

void print(int j,int i)
{
if(j>=2)return;
j=j+i;
i++;
cout<<j<<" ";
print(j,i);
print(i,j);
cout << '*' <<i<<" ";
}

33,009

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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