当前位置:酷百书>百科知识>汉诺塔 递归算法的详细解释???请教高手

汉诺塔 递归算法的详细解释???请教高手

2023-07-04 16:18:38 编辑:join 浏览量:633

汉诺塔 递归算法的详细解释???请教高手

汉诺塔 递归算法的详细解释???请教高手

为了实现 n个盘从 借助c 从a 移动到 b

思路如下:

首先考虑极限当只有一个盘的时候 只要 盘直接从 a -> b即可

那么当有2个盘的时候就只要先把1号盘从a -> c 然后 把2号盘 a->b 再 把 2好盘从 c - > b

那么当有n个盘的时候你只要先把 n-1个 盘 借助 b 移动到 c 然后将 n号盘从 a -> b

那么这时候只要将 n-1想办法从c移动到 b 借助 a 那么就可以先把 n-2个盘借助b移动到a

然后 把n-1号盘从c-> b如此递归就是了!

#include <stdio.h>

void mov(int n,char a,char b)

{

printf("盘%d : 从 %c ---> %c\n",n,a,b);

}

void Hanoi(int n,char a,char b,char c)

{

if(n == 0) return ;

Hanoi(n-1,a,c,b);

mov(n,a,b);

Hanoi(n-1,c,b,a);

}

int main()

{

Hanoi(2,'a','b','c');

return 0;

}

标签:汉诺塔,递归,算法

版权声明:文章由 酷百书 整理收集,来源于互联网或者用户投稿,如有侵权,请联系我们,我们会立即处理。如转载请保留本文链接:https://www.kubaishu.com/article/309984.html
热门文章