Уведомления

Группа в Telegram: @pythonsu

#1 Июль 3, 2016 00:46:30

oreol
Зарегистрирован: 2016-07-03
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Числа Фибоначчи. Ошибка в коде

Написал ради интереса скрипт для вычисления числа Фибоначчи (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 и тд.) скрипт выдает ошибку.

Отредактировано oreol (Июль 3, 2016 00:52:10)

Офлайн

#2 Июль 3, 2016 01:46:55

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9992
Репутация: +  857  -
Профиль   Отправить e-mail  

Числа Фибоначчи. Ошибка в коде

>>> 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: Ошибка, попробуйте еще раз
>>>



Офлайн

#3 Июль 3, 2016 14:28:04

oreol
Зарегистрирован: 2016-07-03
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Числа Фибоначчи. Ошибка в коде

все работает, просто малость изменил

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))

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version