我在用Python写一个得到一个指定长度的斐波那契数列的倒数几项时,发现我的程序要输出的结果不对,我一时看不出哪里有问题,希望能帮我看看
input:
4
5, 3
7, 0
7, 7
7, 8
expected output
5, 3, 2
13, 8, 5, 3, 2, 1, 1
invalid
s=[]
def getFibonacci(n):
if n<3:
return 1
else:return getFibonacci(n-1)+getFibonacci (n-2)
N =int(input())
for i in range(N):
line = list(map(int,input().split(", ")))
n=line[0]
d=line[1]
for j in range(1,n):
s.append(getFibonacci(j))
if(n>=d and d!=0):
for x in range(n-1,n-d,-1):
print(s[x],end=", ")
print(s[n-d-1])
elif(d==0):
print()
else:
print('invalid')
我的输入和我输出来的结果:
4
5, 3
7, 0
7, 7
7, 8
invalid
我有点不明白是为啥只输出最后一行的结果
缩进和输出倒数第几项代码逻辑都有问题
def getFibonacci(n):
if n<3:
return 1
else:return getFibonacci(n-1)+getFibonacci (n-2)
N =int(input())
for i in range(N):
line = list(map(int,input().split(", ")))
n=line[0]
d=line[1]
s=[]
for j in range(1,n):
s.append(getFibonacci(j))
if(n>=d and d!=0):
print(', '.join(map(str,s[-d:])))#取后n项直接切片就行了,题主原来的代码会越界
elif(d==0):
print()
else:
print('invalid')
缩进有问题
s=[]
def getFibonacci(n):
if n<3:
return 1
else:
return getFibonacci(n-1)+getFibonacci (n-2)
N =int(input())
for i in range(N):
line = list(map(int,input().split(", ")))
n=line[0]
d=line[1]
for j in range(1,n):
s.append(getFibonacci(j))
if(n>=d and d!=0):
for x in range(n-1,n-d,-1):
print(s[x],end=", ")
print(s[n-d-1])
elif n<d:
print('invalid')
for j in range(1, n) 那一行开始代码都要缩进一行放在上一个循环里
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!