проблема с тестовым примером fibnoacci — Python

#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 . Проверьте мой отредактированный ответ для решения.