Как мы сгенерируем n-й член последовательности Фибоначчи, который имеет начальные значения, отличные от 0 и 1. То есть пользователь задает два начальных значения, скажем, 1 и 4, затем код генерирует Фибоначчи на основе пользовательского ввода , Например, 1 и 4 даст 1,4,5,9,13,23 ...
Придумать это довольно просто с помощью табуляции или рекурсии, но я попробовал поискать общую формулу (чтобы сэкономить время выполнения) и остановился на этом:
G (a, b, n) = ((a (√5 - 1) + 2b) Phin + (a (√5 + 1) - 2b) (–phi) n) / (2√5)
Обратите внимание, в вышеприведенной формуле, что "Phin" является Phi к степени n. (Фи ** н)
, где a и b являются начальными значениями, фи, как вы уже догадались, составляет (1 + √5) / 2, а n-е значение должно быть получено.
Я попытался реализовать приведенную выше формулу в python, но не дал ожидаемого результата (значения не соответствуют ожидаемым). Сайт, на котором я нашел эту формулу, нашел , здесь имеет встроенный генератор последовательности, этот генератор работает как положено, а мой код - нет. Кто-нибудь может определить, где я ошибся?
Когда я делаю фибон (1,4,3), он производит 13,260990336999413. Но ответ должен быть 9; 1,4,5,9
G (a, b, n) = ((a (√5 - 1) + 2b) Phin + (a (√5 + 1) - 2b) (–phi) n) / (2√5)
def fibon(a,b,n):
phi = (1+sqrt(5))/2
g = ((a*(sqrt(5) - 1)+2*b)*phi**n +(a*(sqrt(5)+1)-2*b)*(-phi)**n)/2*(sqrt(5))
return g