参考递归第一节,设计一个程序solve_hanoi_tower(disks, from, to, use),打印汉诺塔的移动步骤, 比如移动3个:

    1. solve_hanoi_tower(['i', 'j', 'k'],'A', 'B', 'C')
    2. // i,j,k代表碟子,k最小,i最大
    3. // A,B,C是三个位置

    输出:

    k A->B
    j A->C
    k B->C
    i A->B
    k C->A
    j C->B
    k A->B
    

    答案: 练习在递归中生成结果。

    function moveTower(disks, k,  n, from, to, use) {
      if(n === 1) {
        console.log(`${disks[k]} ${from}->${to}`)
        return
      }
      moveTower(disks, k + 1, n - 1, from ,use, to)
      console.log(`${disks[k]} ${from}->${to}`)
      moveTower(disks, k + 1, n - 1, use , to, from)
    }
    
    function solve_hanoi_tower(disks, from, to, use) {
      moveTower(disks, 0, disks.length, from, to, use)
    }