我写了一个函数来找到第n个fibonancci。这里的代码 -
def fib(n):
res1 = 0
res2 = 0
for i in str(n):
res1 = n - 1
for j in str(n):
res2 = n - 2
return res1 + res2
通过上面的代码,如果我输入n = 4而不是打印5.这是正确的。但如果我打印n = 5而不是打印7,那就不正确了。如何解决这里的错误。有任何逻辑错误吗?任何人都可以详细解释。
不要使用递归方法我希望它与迭代有关。
答案 0 :(得分:4)
def fib(n):
a,b = 1,1
for i in range(n-1):
a,b = b,a+b
return a
print(fib(4))
嗯,有一个TechnoBeans页面显示5 Ways of Fibonacci in Python。
您的代码:
def fib(n):
res1 = 0
res2 = 0
for i in str(n): # i gets the string value 9 here
res1 = n-1 # res1 is 9-1 which is 8
for j in str(n): # j gets the string value 9 here
res2= n -2 # res2 is 9-2 which is 7
return res1 +res2 # returns 8 + 7 which is 15
print(fib(9)) # output 15
你的代码中有很多不必要的东西,你首先需要对Python有一些基本的了解。我个人发现以下网站对学习Python很有帮助: Learn Python The Hard Way
要理解为什么您的代码不能做Fibonacci,您需要了解Fibonacci的工作原理。你可以在这里阅读更多关于斐波那契的信息 Math Is Fun 网站上的Fibonacci Sequence。