2015-06-22 3 views
-2

Почему эта часть кода не генерирует числа фибоначчи меньше заданного значения.Число Фибоначчи меньше заданного значения

from math import sqrt 
def Fib(n): 
    return round(((1+sqrt(5))**n-(1-sqrt(5))**n)/(2**n*sqrt(5))) 

def Fiblessthan(m): 
    total = [0] 
    count = 1 
    while max(total) < m: 
     total.append(Fib(count)) 
     count = count + 1 

К примеру я не то, чтобы быть в состоянии напечатать все числа Фибоначчи менее 4000000. Это правильный способ приблизиться к этому.

+0

Что он делает вместо этого? – Navith

+4

Не должно быть 'max (total) ZdaR

+0

' в то время как max (всего)> m: 'не является истиной в начале. И ваша функция fib не подходит для вычисления значения фида здесь! – Wikunia

ответ

1
from math import sqrt 
def Fib(n): 
    return round(((1+sqrt(5))**n-(1-sqrt(5))**n)/(2**n*sqrt(5))) 

def Fiblessthan(m): 
    total = [0] 
    count = 1 
    while total[-1] < m: 
     total.append(Fib(count)) 
     count = count + 1 
    return total 

Вы должны проверить на общую сумму менее m.

+0

Than возвращает список по числу фибоначчи, который является длиной ввода. Мне нужна функция, которая производит число фибоначчи до определенного значения – phighter

+0

@phighter изменил ее, как вы хотите :) – k4vin

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