您的位置:首页 > 其它

汉诺塔 hanoi 递归

2015-12-17 22:17 183 查看

原创,未经允许,不得转载。

递归属于分治法(divide and conquer)。

遇到递归问题,可以分为三个步骤。

1 分解

2 解决

3 合并

hanoi塔问题,可以经过以上三个步骤来解决,

1 分解

将n个盘子的移动问题,分解为上面n-1个盘子和1个(下面第n个)盘子的移动问题;

2 解决

若n==1

将1个盘子从x移动到z。

若n>1

将上面n-1个盘子从x移动到y;

将1个(下面第n个)盘子从x移动到z;

(3 合并) 将y上面n-1个盘子从y移动到z;

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

{

if(n==1)

move(n,x,z);

else{

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

move(n,x,z);

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

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: