为什么选择console.log(fibonacci(3));打印未定义?

时间:2019-06-23 13:06:34

标签: javascript

let mem = [0, 1, 1];

const fibonacci = (n) => {
    if (n < 2) {
        return mem[n];
    } else if (n == 2) {
        console.log(mem.length-1);
        console.log((mem[mem.length-1]));
        // return (mem[mem.length - 1]);
        return (mem[mem.length-1]); // why this return statement return undefined???
    }
    else {
        mem.push(mem[mem.length - 1] + mem[mem.length - 2]);
        fibonacci(n - 1);
    }
};

console.log(fibonacci(3));

预期输出:2 ..

1 个答案:

答案 0 :(得分:0)

如下修改代码:

let mem = [0, 1, 1];

const fibonacci = (n) => {
    if (n < 2) {
        return mem[n];
    } else if (n == 2) {
        console.log(mem.length-1);
        console.log((mem[mem.length-1]));
        // return (mem[mem.length - 1]);
        return (mem[mem.length-1]); // why this return statement return undefined???
    }
    else {
        mem.push(mem[mem.length - 1] + mem[mem.length - 2]);
        return fibonacci(n - 1);
    }
};

console.log(fibonacci(4));

您在return的{​​{1}}之前错过了fibonacci(n - 1)