每天都在头秃 2022-12-13 22:01 采纳率: 96.7%
浏览 31
已结题

Python程序输出结果不正确

问题遇到的现象和发生背景

我在用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')



用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
运行结果及详细报错内容

我的输入和我输出来的结果:
4
5, 3
7, 0
7, 7
7, 8
invalid
我有点不明白是为啥只输出最后一行的结果

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”
  • 写回答

4条回答 默认 最新

  • CSDN专家-showbo 2022-12-13 22:26
    关注

    缩进和输出倒数第几项代码逻辑都有问题

    
    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')
    
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 12月21日
  • 已采纳回答 12月13日
  • 创建了问题 12月13日