Javascript 使用循环和递归的斐波那契级数

Javascript 使用循环和递归的斐波那契级数,javascript,Javascript,所以,我使用循环和递归技术导出了斐波那契级数的代码。但是,在不使用循环和递归技术的情况下,如何编写相同的代码呢 这是使用循环: function fibouter() { let n=1; function fib() { let t1=0,t2=1,next,i; for(i=1;i<=n;++i) { next=t1+t2; t1=t2; t2

所以,我使用循环和递归技术导出了斐波那契级数的代码。但是,在不使用循环和递归技术的情况下,如何编写相同的代码呢

这是使用循环:

function fibouter()
 {
    let n=1;
     function fib()
    {
      let t1=0,t2=1,next,i;
       for(i=1;i<=n;++i)
       {
            next=t1+t2;
             t1=t2;
             t2=next;
        }
        n++;
       return t2;

     }
     return fib;
 }
   const run=fibouter();
函数fibouter()
{
设n=1;
函数fib()
{
设t1=0,t2=1,下一步,i;

对于(i=1;i,可以直接使用比奈的斐波那契数公式

fib(n){返回Math.round((Math.pow((1+Math.sqrt(5))/2,n)-Math.pow((1-Math.sqrt(5))/2,n))/Math.sqrt(5))}
for(设i=0;i<15;i++)
{
控制台日志(fib(i));

}
虽然记忆化是斐波那契(参考:)的最佳方法,但当您要求一种无需递归和循环的计算方法时,这里是最基本的方法。尽管您仍然需要一个循环,但您可以做的是将预计算的斐波那契数列存储在一个数组中,并根据需要打印。示例:

int fib[100000];
fib[0] = 1;
fib[1] = 2;
for (int i=3; i<100000; ++i) {
    fib[i]=fib[i-1]+fib[i-2];
}
int-fib[100000];
fib[0]=1;
fib[1]=2;

对于(inti=3;i实际上,我刚刚提出了一个没有循环和递归的解决方案

function fib() {
    let t1=0,t2=1;
    return () =>  {
        const next=t1+t2;
        t1=t2;
        t2=next;

        return t1;
     }

    }
   let run=fib();

我认为这个解决方案更好,可以减少递归。

这可以通过谷歌很容易找到。你能澄清为什么不想使用循环或递归吗?这些通常是你实现斐波那契的方法sequence@wmp224我只是想尝试一下,因为使用循环和递归的交互次数更多谷歌:
函数fib(n){return Math.round(0.44721359549995682*Math.pow(1.618033987498949,n));}
function fib() {
    let t1=0,t2=1;
    return () =>  {
        const next=t1+t2;
        t1=t2;
        t2=next;

        return t1;
     }

    }
   let run=fib();