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();