我试着用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);
答案 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)
伯爵只是数字位置对吗?下一个数字是前两个数字的总和。在你的第二个代码中,它只是与职位相关的普遍数字的总和。