漢諾塔問題的遞歸解法

wKioL1c0mLOj9UFaAAMmSLBAO4U112.png

漢諾塔問題的遞歸解法:

實現程序:

#include<iostream>

using namespace std;


void move(int n, char i, char j)

{

cout << "把" << n << "號從" << i << "移動到" << j << endl;

}


void hanoi(int n, char x, char y, char z)

{

if (n == 1)

{

move(1, x,z);

}

else

{

hanoi(n - 1, x, z, y);

move(n, x, z);

hanoi(n - 1, y, x, z);

}

}


int main()

{

cout << "以下是3層漢諾塔的解法:" << endl;

hanoi(3, 'x', 'y', 'z');

cout << "輸出結果完畢!" << endl;

system("pause");

return 0;

}

運行結果:

以下是3層漢諾塔的解法:

把1號從x移動到z

把2號從x移動到y

把1號從z移動到y

把3號從x移動到z

把1號從y移動到x

把2號從y移動到z

把1號從x移動到z

輸出結果完畢!

請按任意鍵繼續. . .


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