2016-05-25 2 views
0

Я попытался написать последовательность фибоначчи в JS.последовательность fibonacci с while

я мог бы получить результат

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) 

Интересно, если это возможно, чтобы получить результат с этим в то время как (общее и количество) цикл, как этот?

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

У вас возникли проблемы с этим? Я сам не переводчик JS. –

+1

Если вы используете цикл, вам нужно будет отслеживать больше вещей, как в первом блоке кода. Вы можете найти эту ссылку, полезную для вычисления общей суммы на основе подсчета: http://www.maths.surrey.ac.uk/hosted-sites/R.Knott/Fibonacci/fibFormula.html – Marcelo

ответ

0

Нет, это невозможно, второе даст вам квадратичные полиномиальные значения.

Существуют, однако, различные способы вычисления n-й суммы фибоначчи без вычисления предыдущих. Одним из способов является использование матричного умножения, а другое использует вещественную формулу с корнями, где вещественные числа являются целыми числами.

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); 
+0

некоторые объяснения для леди pls. ..? –

-1

Подсчет числа занятых позиций прямо? следующий номер - сумма предыдущих 2 число правый. Здесь, на вашем втором коде, это всего лишь сумма чисел с номером.

+0

это обязательно должен быть комментарий! –

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 

(* если вы не используете закрытую ред форма выдумка (п))

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 

Надеется, что это помогает.

Смежные вопросы