fibnoacci测试用例问题-Python



对于运行,4的测试代码,每个leet代码的答案应该是3。根据algorexpert.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))

谢谢

两者都是正确的。答案取决于序列的开始。如果以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]

最新更新