斐波纳契序列与while

时间:2016-05-25 11:45:35

标签: javascript while-loop

我试着用JS编写斐波那契序列。

我可以得到结果

var x = 0;
var y = 1;
var result = 0;
while (result<100){

result=x+y;
x = y;
y = result;
document.write("This is next number "+result+"<br>")
}
console.log(result)

我想知道是否有可能获得这个while(total和count)循环的结果?

var total = 0, count = 1;
while(count <= 10){
total += count;
count += 1;
}
console.log(total);

5 个答案:

答案 0 :(得分:0)

不,它不可能,第二个会给你二次多项式值。

然而,有多种方法可以计算第n个斐波纳契数而不计算以前的数量。一种方法是使用矩阵乘法,另一种方法是使用带有根的实值公式,其中实数恰好是整数。

答案 1 :(得分:0)

var x = 0, y = 1;
var count = 2 ;
var fib ;
while(count++ <=10){
    var fib = x+y ;
    x = y ;
    y = fib;
}
console.log(fib);

答案 2 :(得分:0)

您可以删除其中一个外部变量以进行其他减法:

var x = 0;
var y = 1;
while(y < 100) {
    y += x;
    x = y - x;
}
// result is y

要确定这是正确的,请将上述内容与使用临时内容进行比较:

var x = 0;
var y = 1;
while(y < 100) {
    var tmp = x + y;
    x = y;   // = tmp - x
    y = tmp;
}
// result is y

如果你想要计数器,那么额外的变量是唯一的方式*:

var x = 0;
var y = 1;
// you can define fib(0) either 1 or 0, this is fib(0) := 1
for(var i = 0; i < 10; ++i) {
    y += x;
    x = y - x;
}
// result is y

(*除非你使用封闭形式的fib(n))

答案 3 :(得分:0)

试试这个: -

var fib = function(n){
var a=0,b=1,f=1,i=2;
var arr =[];
while(f<n){
arr.push(f);
f=a+b;
a=b;
b=f;
i++;
}
return arr;
}
var fibArr = fib(20);
console.log(fibArr);// returns array of fibonacci

希望这有帮助。

答案 4 :(得分:-1)

伯爵只是数字位置对吗?下一个数字是前两个数字的总和。在你的第二个代码中,它只是与职位相关的普遍数字的总和。