C++ C++;递归兔子赋值
它要求: 修改递归rabbit函数,使其在视觉上易于遵循执行流程。不只是添加“Enter”和“Leave”消息,而是根据当前递归调用的“深度”缩进跟踪消息 通过在递归兔子函数中正确地添加空格,可以更好地理解递归的工作原理 这是程序应显示的内容:C++ C++;递归兔子赋值,c++,recursion,C++,Recursion,它要求: 修改递归rabbit函数,使其在视觉上易于遵循执行流程。不只是添加“Enter”和“Leave”消息,而是根据当前递归调用的“深度”缩进跟踪消息 通过在递归兔子函数中正确地添加空格,可以更好地理解递归的工作原理 这是程序应显示的内容: Enter rabbit: n = 4 Enter rabbit: n = 3 Enter rabbit: n = 2 Leave rabbit: n = 2 value = 1 Enter rabbit: n
Enter rabbit: n = 4
Enter rabbit: n = 3
Enter rabbit: n = 2
Leave rabbit: n = 2 value = 1
Enter rabbit: n = 1
Leave rabbit: n = 1 value = 1
Leave rabbit: n = 3 value = 2
Enter rabbit: n = 2
Leave rabbit: n = 2 value = 1
Leave rabbit: n = 4 value = 3
对于如何获得正确的缩进或如何显示n大于2的“离开兔子”,我真的没有任何线索。到目前为止,我的代码是:
#include <iostream>
#include <iomanip>
int rabbit(int);
using namespace std;
int main()
{
cout << rabbit(4) << endl;
return 0;
}
int rabbit(int n)
{
cout << "Enter rabbit: n = " << n << endl;
if(n <=2)
{
cout << "Leave rabbit: n = " << n << endl;
return 1;
}
else
{
return rabbit(n - 1) + rabbit(n - 2);
}
}
#包括
#包括
int兔(int);
使用名称空间std;
int main()
{
所以,我们尽量不给作业提供代码解决方案,值得赞扬的是,您只要求提示
解决任何问题的关键是把它说清楚
如果查看所需的输出,您可以看到
第一次调用的输出没有缩进
下一次调用的输出缩进3个空格
下一次调用的输出再缩进3个空格
那么:对rabbit
的调用级别与缩进量之间的关系是什么
如果有更多、更深入的调用rabbit
,我们希望有一个好的解决方案继续工作,提供更高级别的缩进。我想你会自责的,你需要做的就是在这两种情况下都使用value变量
int rabbit(int n, int parameter)
{
int value;
for(int i = 0; i < parameter; i++)
{
cout << " ";
}
cout << "Enter rabbit: n = " << n << endl;
if(n <=2)
{
value = 1;
}
else
{
value = rabbit(n - 1, parameter + 1) + rabbit(n - 2, parameter + 1);
}
for(int i = 0; i < parameter; i++)
{
cout << " ";
}
cout << "Leave rabbit: n = " << n << " value = " << value << endl;
return value;
}
int兔子(int n,int参数)
{
int值;
对于(int i=0;i 你没试过兔子的功能吗?:-)这个借口太弱了!你真丢脸…非常感谢你的回答。我设法让它更接近它应该是什么样子。但是,我不知道我怎么才能得到“离开兔子:n=3”和“离开兔子:n=4”显示。我做错了什么吗?我将编辑我的主要帖子,以获得最新的代码。再次感谢您的帮助。只是一个提示,但请尝试保存要返回的值,然后在返回之前打印带有它的左行。非常感谢。到目前为止,我的程序显示:Enter rabbit:n=4 Enter rabbit:n=3输入兔子:n=2离开兔子:n=2值=1进入兔子:n=1离开兔子:n=1值=1进入兔子:n=2离开兔子:n=2值=1,但我缺少“离开兔子:n=3值=2”和“离开兔子:n=4值=3”,有没有关于如何显示最后两个的线索?差不多了。rabbit函数中有两个位置返回值,它们的工作方式应该相同。
int rabbit(int n, int parameter)
{
int value;
for(int i = 0; i < parameter; i++)
{
cout << " ";
}
cout << "Enter rabbit: n = " << n << endl;
if(n <=2)
{
value = 1;
}
else
{
value = rabbit(n - 1, parameter + 1) + rabbit(n - 2, parameter + 1);
}
for(int i = 0; i < parameter; i++)
{
cout << " ";
}
cout << "Leave rabbit: n = " << n << " value = " << value << endl;
return value;
}