带扭曲的斐波那契-JavaScript

带扭曲的斐波那契-JavaScript,javascript,fibonacci,Javascript,Fibonacci,我是在接受JavaScript采访时被问到这个问题的 实现斐波那契数列以列出n个数字(不包括n个)的序列,其中递归仅对偶数发生。 比如说 fib(10) -> fib(8) + fib (6) fib(8) -> fib(6) + fib(4) fib(6) -> fib(4) +fib(2) fib(4) -> fib(2) 我不知道该怎么办 这肯定需要进一步澄清。(面试官应该更清楚些) 但据我所知 所以这个系列必须从某个地方开始,我假设它从fib(2)=1开始。并

我是在接受JavaScript采访时被问到这个问题的

实现斐波那契数列以列出n个数字(不包括n个)的序列,其中递归仅对偶数发生。 比如说

fib(10) -> fib(8) + fib (6)
fib(8) -> fib(6) + fib(4)
fib(6)  -> fib(4) +fib(2)
fib(4) -> fib(2)

我不知道该怎么办

这肯定需要进一步澄清。(面试官应该更清楚些)

但据我所知

所以这个系列必须从某个地方开始,我假设它从fib(2)=1开始。并遵循面试官给出的“代码”部分

这可以简单到:

  • fib(2)=1
  • fib(4)=1
  • fib(6)=2
i、 e.fib(n)=原fib(n/2)

考虑因素

fib( 4) = fib( 2)           =  1 * fib(2)
fib( 6) = fib( 4) + fib( 2) =  2 * fib(2)
fib( 8) = fib( 6) + fib( 4) =  3 * fib(2)
fib(10) = fib( 8) + fib( 6) =  5 * fib(2)
fib(12) = fib(10) + fib( 8) =  8 * fib(2)
fib(14) = fib(12) + fib(10) = 13 * fib(2)
                               ^
                               this is fibonacci
在代码中,我们得到了一个很好的小递归(对所有n>=0的对象都有效):


你真的一点想法都没有吗?我想你尝试了一些事情,但失败了——你尝试了什么样的事情,遇到了什么问题?你更有可能通过表现出自己的努力来获得帮助和学习。@Chris,所以他想要所有的数字,但只对evens进行递归?那么基本上是对偶数的递归和对赔率的迭代?我只是不明白他到底是什么意思这个问题对我来说也很困惑。。当我要求细化时,我得到了作为代码添加的部分
var i;

function fib(n) {
    switch (true) {
        case n === 0:
            return 0;
        case n === 2:
            return 1;
        default:
            return fib(n - 2) + fib(n - 4);
    }
}

function writeFib(n) {
    document.write('fib(' + n + ') = ' + fib(n) + ' * fib(2)<br>');
}

for (i = 0; i <= 20; i += 2) {
    writeFib(i);
}
var i;

function fib(n) {
    switch (true) {
        case n === 0:
            return '0';
        case n === 2:
            return 'fib(2)';
        default:
            return 'fib(' + (n - 2) + ') + fib(' + (n - 4) + ')';
    }
}

function writeFib(n) {
    document.write('fib(' + n + ') -&gt; ' + fib(n) + '<br>');
}

for (i = 0; i <= 20; i += 2) {
    writeFib(i);
}