第12周專案3漢諾塔--移動步驟(遞迴函式)
阿新 • • 發佈:2018-12-30
問題及程式碼:
/* *Copyright (c)2014,煙臺大學計算機與控制工程學院 *All rights reserved. *檔名稱:hannuota.cpp *作 者:單昕昕 *完成日期:2014年11月13日 *版 本 號:v1.0 * *問題描述:漢諾塔的遊戲。 *程式輸出:n個盤子的移動步驟。 */ #include <iostream> using namespace std; int move(int n,char A,char B,char C); int main() { int n; cin>>n; //有n個盤子 move(n,'A','B','C'); return 0; } //有n個盤子, int move(int n,char A,char B,char C) { if(n==1) cout<<A<<"-->"<<C<<endl; else { move(n-1,A,C,B); cout<<A<<"-->"<<C<<endl; move(n-1,B,A,C); } }
執行結果:
————————————————————————四個盤子——————————————————————————————
————————————————————————三個盤子——————————————————————————————
————————————————————————15個盤子的部分截圖——————————————————————————————
知識點總結:
漢諾塔的玩法要知道。
學習心得:
感覺這個函式的技巧性很高啊,真費腦子╮(╯▽╰)╭盤子越多步驟越多,滿足函式f(n)=2*f(n)+1.