汉诺塔
题的意思
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){ // 当n等一,就代表最后一个 if n == 1 { print("\(x)->\(z)") }else{ ///x 借助 z 移动到y move(n-1, x: x, y: z, z: y) ///x当前的最后一个 移动到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); ///现在都已经移动到 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