漢諾塔
題的意思
http://www.360doc.com/content/12/0727/11/219024_226737868.shtml
x, y , z代表三個柱子。 要把n個塊i移動到 z上。-
swift 版本
///x借助y移動到z func move(n:Int,x:String,y:String,z:String){ // 當(dāng)n等一,就代表最后一個 if n == 1 { print("\(x)->\(z)") }else{ ///x 借助 z 移動到y(tǒng) move(n-1, x: x, y: z, z: y) ///x當(dāng)前的最后一個 移動到z print("\(x)->\(z)") ///然后把剩下的 y借助 x 移動到 z move(n-1, x: y, y: x, z: z) } } move(3, x: "x", y: "y", z: "z") -
c++版本
///x借助 y 移動到 z void move(int n,char x, char y,char z){ ///如果n等一1, 就直接把 x 移動到z上面 if (1 == n){ std::cout<<x<<"->"<<z<<std::endl; }else{ ///沒有等于1. ///第一步先 把x上的借助z 移動到 y上 move(n-1, x, z, y); ///現(xiàn)在都已經(jīng)移動到 y上 //然后移動第n個 std::cout<<x<<"->"<<z<<std::endl; ///然后 再把 y上借助x移動到z move(n-1, y, x, z); /// 完成全部移動 } } int main() { int n = 0; std::cin>>n; move(n, 'x', 'y', 'z'); return 0; }
個人博客: www.liangtongzhuo.com