用递归程序输出机器人打开盒子、拿糖、关闭盒子的动作过程~

chidanly 2009-11-10 07:36:54
有三个大小不等的盒子及一块糖,将糖放在第3个盒子中,第3个盒子关上后放在第2个盒子中,第2个盒子关上后放在第1个盒子中。现在一个机器人来取这块糖,取走后,关上所有盒子。机器人的动作过程描述如下:
open the 1 box
open the 2 box
open the 3 box
get a sugar
close the 3 box
close the 2 box
close the 1 box
编写一个递归程序,要求从键盘输入盒子数后,输出如上所示的机器人的动作过程。
...全文
91 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hecha 2009-11-17
  • 打赏
  • 举报
回复
int box_count = 1;
void get_candy(int box_level)
{
if (box_level == 0)
{
cout << "get a candy" << endl;
}
else
{
cout << "open box " << box_count++ << endl;
get_candy(box_level - 1);
cout << "close box " << box_count-- << endl;
}
}
pengs88 2009-11-12
  • 打赏
  • 举报
回复
#include<iostream>
#include<iomanip>
using namespace std;

void robot_open(int n=3);
void robot_close(int m=3);

int main()
{
int n=0;

cout<<"please input a number: ";
cin>>n;

robot_open();
cout<<setw(5*8)<<"get the sugar !"<<endl;
robot_close();

robot_open(n);
cout<<setw(8*(n+2))<<"get the sugar !"<<endl;
robot_close(n);

return 0;
}


void robot_open(int n)
{
if(n>0)
{
robot_open(n-1);
cout<<setw(8*n)<<"open the "<<n<<"box!"<<endl;
}
}

void robot_close(int m)
{
while(m>0)
cout<<setw(8*m+8)<<"Close the "<<m--<<"box!"<<endl;

}

chidanly 2009-11-10
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

void open(int n,int i)
{
int j=0;
j=n-i+1;
if(i>0)
{
cout<<"open the "<<j<<" box"<<endl;
open(n,i-1);
}
}

void close(int n)
{
if(n>0)
{
cout<<"close the "<<n<<" box"<<endl;
close(n-1);
}
}

int main()
{
int n,i;
cout<<"Please input the number of boxs:"<<endl;
cin>>n;
i=n;
open(n,i);
cout<<"get a sugar"<<endl;
close(n);
return 0;
}
do_fork 2009-11-10
  • 打赏
  • 举报
回复
#include <iostream>

template <int n> void get_sugar(int x)
{
if (x>n)
return;
std::cout<<"open the "<<x<<"box\n";
if (x==n)
std::cout<<"get a sugar \n";
get_sugar<n>(x+1);
std::cout<<"close the "<<x<<"box\n";
}

template <int n> void bot_get()
{
get_sugar<n>(1);
}

int main()
{
bot_get<3>();
}

65,206

社区成员

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

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