欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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步,这里执行了三次
HANOI 汉诺塔

修改

昨天一直想不通, 为啥结果会出来三次,今天想到会不会是这句话的原因:
for(i=0;i<=n;i++)
稍作修改,改为for(i=0;i