Найти - Пользователи
Полная версия: Числа Фибоначчи. Ошибка в коде
Начало » Python для новичков » Числа Фибоначчи. Ошибка в коде
1
oreol
Написал ради интереса скрипт для вычисления числа Фибоначчи (0, 1, 1, 2, 3, 5, 8, 13.. и тд) по его номеру, но работает не так как надо. При этом ошибку не выдает
def fibonacci(n):
    if n == 1:
        # исключение
        return fibonacci(0)
    elif n == 2:
        # исключение
        return fibonacci(1)
    elif n > 4:
        #основная формула расчета
        return fibonacci((n-2)+(n-1))
    else
        return fibonacci('Ошибка, попробуйте еще раз')
n = int(input('Введите номер'))
print(fibonacci(n))
Если запустите то увидите что при воде “10” скрипт выводит не 34, а словно было введено “11” и дает результат 55. Как я понял почему-то не работают исключения, как их подключить к основной формуле?
При вводе значения относящихся к else (-1, -2 и тд.) скрипт выдает ошибку.
py.user.next
>>> def fibonacci(n):
...     if n == 1:
...         return 0
...     elif n == 2:
...         return 1
...     elif n > 2:
...         return fibonacci(n - 2) + fibonacci(n - 1)
...     else:
...         raise ValueError('Ошибка, попробуйте еще раз')
... 
>>> list(map(fibonacci, range(1, 11)))
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
>>> fibonacci(0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 9, in fibonacci
ValueError: Ошибка, попробуйте еще раз
>>>
oreol
все работает, просто малость изменил
def Fibinacci(n):
    if n == 0:
        return 0
    if n == 1 or n == 2:
        return 1
    return Fibinacci(n-1) + Fibinacci(n-2)
n = int(input('Введите номер Фибоначчи'))
print(Fibinacci(n))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB