HANOI 汉诺塔

#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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章