Как рассчитать функцию Фибоначчи по математической формуле - PullRequest
0 голосов
/ 12 февраля 2019

Как вычислить функцию Фибоначчи по математической формуле

Я пробую эту формулу, но не работаю:

fib(n) = ((1 + 5^0.5) / 2)^n - ((1 - 5^0.5) / 2)^n / 5^0.5

const fib=(n)=>{
    return ((1+(5**0.5))/2)**n-((1-(5**0.5))/2)**n/(5**0.5)
}

Кто-нибудь знает, как это сделать? Спасибо.

Ответы [ 3 ]

0 голосов
/ 12 февраля 2019

Вы, кажется, пытаетесь воссоздать Формула Бине .Вы можете разбить формулу примерно так, чтобы она стала более читабельной:

const fib = n => {
  const alpha = 5**0.5
  const beta = alpha / 2;
  return (1 / alpha) * ((0.5 + beta) ** n - (0.5 - beta) ** n);
}

console.log(fib(10));
0 голосов
/ 12 февраля 2019

Первое, что я хотел бы сделать, это определить φ

var φ = (1 + 5 ** 0.5) / 2;

Затем немного более короткая форма:

var fib = (n) => (φ ** n - ((-φ) ** -n)) / (2 * φ - 1);

Поскольку в результате вы хотите получить целое число, вы также можете броситьв звонилке Math.round().

0 голосов
/ 12 февраля 2019

Формула верна, вам просто нужно добавить немного ().

const fib=(n)=>{
    return (((1+(5**0.5))/2)**n-(((1-(5**0.5))/2)**n))/(5**0.5)
}
for(let i = 0;i<9;i++){
  console.log(fib(i))
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...