|
|
- #include <iostream>
- using namespace std;
- int HanoiTower(int ,char,char,char); //return 型態改為int
- void main()
- {
- int n;
- char A = 'A' , B = 'B' , C = 'C', ans;
- do
- {
- cout << "Hanoi Tower Implementaion\n";
- cout << "How many disks in A ? ";
- cin >> n;
-
- if ( n == 0 )
- cout << "no disk to move.\n";
- else
- cout<< "共輸出" << HanoiTower(n,A,B,C)<< "次" << endl; //HanoiTower函數會return int
-
- cout << "Do you want to continue?\n";
- cin >> ans;
- }while(ans=='Y' || ans=='y');
- }
- int HanoiTower(int n,char a,char b,char c) //傳回型態改為int
- {
- static int i=0; // 設一個靜態int變數,不設的話 會return都會是1而以
- if ( n == 1 )
- {cout << "Move disk from " << a << " -> " << c << endl; i++;}//cout一次 ,i 就加一次
- else
- {
- /*將A上n-1個盤子借助C移至B */
- HanoiTower(n-1,a,c,b);
- cout << "Move disk from " << a << " -> " << c << endl;
- i++; //cout一次 ,i 就加一次
- /*將B上n-1個盤子借助A移至C */
- HanoiTower(n-1,b,a,c);
- }
- return i; //把最後輸出次數 return給main
複製代碼 |
|