文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>递归算法(2)汉诺塔问题

递归算法(2)汉诺塔问题

时间:2010-09-26  来源:fishmwei

汉诺塔:
汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。上帝创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上安大小顺序摞着64片黄金圆盘。上帝命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。

设柱子为:ABC;把n个盘从A移动到C。先把n-1个盘从A移动到B,再把1个盘从A移动到C,最后再把n-1个盘从B移到C,ok。当n==1 时,直接把盘子从A移动到C。

int step = 0;//记录移动次数
void hanno(int n, char src, char mid, char des)
{   
    if (n == 1) {
        step++;
        printf("%c -> %c\n", src, des);
        return ;
    }
    
    hanno(n-1, src, des, mid);
    hanno(1, src, mid, des);
    hanno(n-1, mid, src, des);

    return ;
}

问题解决。
n个盘子,总共移动步数为2^n - 1步。
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载