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

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