js汉诺塔攻略

汉诺塔 tower of hanoi
目的:把所有圆盘从第一个移动到第三个上
rule 1:一次只能移动一块
rule 2:大片不能放在小片上面

在这里插入图片描述
三个柱子分别叫abc

  1. 把最下面一块(m)以上的打包看成一块(n)处理
  2. 把n放到b
  3. 把m放到c
  4. 把n放到c
  5. 完成
    对于第二步和第四步,我们可以拆解成上述1234
    不用关心具体怎么实现的,拆分到一块的时候就出效果了,具体拆分过程就交给递归吧
	// abc
    // n个  (n-1)打包从a放到b上  n从a放到c上  把(n-1)打包从b放到c
    function hanoi (n, a, b, c) {
    	// 最少是一个才有意义,0个没法移动
        if (n > 0) {
            hanoi(n-1, a, c, b)  // 一整套
            console.log('第' + n + '块从' + a + '移到' + c)
            hanoi(n-1, b, a, c)  // 一整套
        }
    }
    hanoi(4, 'A', 'B', 'C')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值