#python #algorithm #fibonacci
#python #алгоритм #фибоначчи
Вопрос:
Для запуска тестового кода из 4 ответов должно быть 3 на код leet. За algoexpert.io показывает, что результат равен 2, поскольку он корректен в тестовом коде. Какой из них правильный? Если да, пожалуйста, объясните и исправьте алгоритм.
n = 4
def getNthFib(n):
lastTwo = [0 , 1]
counter = 3
while counter <= n:
nextFib = lastTwo[0] lastTwo[1]
lastTwo[0] = lastTwo[1]
lastTwo[1] = nextFib
counter = 1
return lastTwo[1] if n > 1 else lastTwo[0]
if __name__ == "__main__":
getNthFib(n)
print(getNthFib(n))
Спасибо
Комментарии:
1. Ваш вопрос «что такое четвертое число Фибоначчи»? Почему бы не посмотреть в Википедии?
2. @kaya3 это не то, что я спросил.
Ответ №1:
Оба верны. Ответ зависит от начала последовательности. Если вы начнете его с 0,1
, то 4-й элемент будет равен 2, а если вы начнете с 1,1
, то 4-й элемент будет равен 3.
Редактировать:
Я внес небольшие изменения в ваш код:
def getNthFib(n):
if n==0: return 0
lastTwo = [1 , 1]
counter = 3
while counter <= n:
nextFib = lastTwo[0] lastTwo[1]
lastTwo[0] = lastTwo[1]
lastTwo[1] = nextFib
counter = 1
return lastTwo[1] if n > 1 else lastTwo[0]
Комментарии:
1. Код Leet не принимает код, начинающийся с 1,1, поскольку их тестовый код включает 0, и код завершается ошибкой. @Аникет Тираткар
2. В этом случае последовательность начинается с
0,1,1
, а их индексация начинается с0
. Это то же самое, что начинать последовательность с1,1
и индексировать с1
. Единственное отличие заключается в том, что вам нужно будет добавить условие дляn=0
. Проверьте мой отредактированный ответ для решения.