python中的斐波那契序列程序运行良好,但输入0除外
除输入n=0外,该程序显示正确的输出python中的斐波那契序列程序运行良好,但输入0除外,python,fibonacci,Python,Fibonacci,除输入n=0外,该程序显示正确的输出 def fib(n): f=list() i=0 while(i<=n): f.append(i) i+=1 f[0]=0 f[1]=1 for i in range(2,n+1): f[i]=f[i-1]+f[i-2] i+=1 return f[n] n=int(input()) print(fib(n)) def fib(n)
def fib(n):
f=list()
i=0
while(i<=n):
f.append(i)
i+=1
f[0]=0
f[1]=1
for i in range(2,n+1):
f[i]=f[i-1]+f[i-2]
i+=1
return f[n]
n=int(input())
print(fib(n))
def fib(n):
f=列表()
i=0
(i)p> >中间的两行,因为在while循环期间初始化这些元素是不必要的。错误来自于事实,对于<代码> n=0 ,您只添加一个元素来列出。然后,改变第一个和第二个元素的值。没有第二个元素。
def fib(n):
f=[]
i=0
while(i<=n):
f.append(i)
i+=1
for i in range(2,n+1):
f[i]=f[i-1]+f[i-2]
i+=1
return f[n]
n=int(input())
print(fib(n))
def fib(n):
f=[]
i=0
而(i任何一种鸭子类型它:
def fib(n):
if n in [0, 1]:
return n
.
.
或者将f[0]=0
和f[1]=1
分别更改为f.append(0)
和f.append(1)
。您不需要这两行
f[0]=0
f[1]=1
删除它们,一切都会正常工作。对代码的更正:
def fib(n):
f=list()
i=0
while(i<=n):
f.append(i)
i+=1
# HERE WAS THE MISTAKE
f.append(0)
f.append(1)
for i in range(2,n+1):
f[i]=f[i-1]+f[i-2]
i+=1
return f[n]
代码中的问题是循环没有创建索引为1的项,因此在循环之后,您可以更改此项,因为它不存在。
我建议在开始时使用“硬编码”0和1,然后使用递归定义斐波那契函数
def fib(n):
if 0<=n<2: return n
else: return fib(n-2)+fib(n-1)
使用列表获取第i项或列出所有x fibonacci值
[fib(i) for i in range(x)]
@如果不是的话!你为什么会这样想?(也测试了这个)当n=0时,你在f的位置1没有值,但是你的句子试图读取在该位置f[1]=1的te值。可能你被字典弄糊涂了。顺便说一句,试着在你的Python代码中遵循PEP8。
def fib(n):
if 0<=n<2: return n
else: return fib(n-2)+fib(n-1)
fib(i)
[fib(i) for i in range(x)]