HANOI 汉诺塔
程序员文章站
2024-03-17 14:35:16
...
#include<iostream>
using namespace std;
void hanoi(int, int, int, int); // 函数原型
void hanoi(int n, int p1, int p2, int p3)
{
if (n==1)
cout<<"盘子从"<<p1<<"移到"<<p3<<endl;
else{
hanoi(n-1,p1,p3,p2);
cout<<"盘子从"<<p1<<"移到"<<p3<<endl;
hanoi(n-1,p2,p1,p3) ;
}
}
int main()
{
int i,n;
cout<<"请输入盘子数量: ";
cin >>n;
for(i=0;i<=n;i++)
hanoi(n,1,2,3);//我今天之前一直输入的是(i,1,2,3),但是又忘了,应该是n,n是输入的步数。
return 0;
}
代码很奇怪 我实现出来 会操作三遍???
不知道咋回事。。。看图
应该是n2-1步,输入2,我应该得出3步,这里执行了三次
修改
昨天一直想不通, 为啥结果会出来三次,今天想到会不会是这句话的原因:
for(i=0;i<=n;i++)
稍作修改,改为for(i=0;i
上一篇: 牛客网机试题-放苹果
下一篇: 用JavaScript实现二分查找