如何用递归求出以下题目?

205 阅读1分钟

1.求出斐波那契数列中任意位置的数是多少?

function rabbit(n) {
  if (n == 1 || n == 2) {
     return 1;
  }
     return rabbit(n - 1) + rabbit(n - 2);
}
let res = rabbit(prompt('请输入位数'));
console.log(res);

2. 解答汉诺塔游戏步骤

let step = 1
// 一共有n个盘子:从a移动到c,借助b
function fn(n,a,b,c){
    if(n == 1) {
        console.log(step++, a, '-->', c)
    } else {
        fn(n-1, a, c, b)
        console.log(step++, a, '-->', c)
        fn(n-1, b, a, c)
    }
}
fn(3, 'A', 'B', 'C')

以3个盘子为例,输出步骤为下

image.png

3. 数组求和

let arr = [1, 2, 3, 4, 5, 6] 

function add(arr) {
    if (arr.length == 1) return arr[0] 
    return arr[0] + add(arr.slice(1)) 
}
console.log(add(arr))