fangxiaokai 发表于 2020-10-19 22:54:00

求大神解答

def one(x):
    if x==0:
   
      
      return 0
    if x==1:
      return 1


    return one(x-1)+one(x-2)                  求调用详细过程最好能给划出来谢谢!!


print(one(20))

sunrise085 发表于 2020-10-19 23:11:16

20太长了
给你写一下one(6)吧
def one(x):
    if x==0:
      return 0
    if x==1:
      return 1
    return one(x-1)+one(x-2)

print(one(6))
#one(6)
#=one(5)+one(4)
#=one(4)+one(3)+one(3)+one(2)
#=one(3)+one(2)+one(2)+one(1)+one(2)+one(1)+one(1)+one(0)
#=one(2)+one(1)+one(1)+one(0)++one(1)+one(0)+1+one(1)+one(0)+1+1+0
#=one(1)+one(0)+1+1+0+1+0+1+1+0+1+1+0
#=1+0+1+1+0+1+0+1+1+0+1+1+0
#=8
#最后输出的是8

笨鸟学飞 发表于 2020-10-19 23:27:51

def one(x):      
    if x==0:
      return 0
    if x==1:
      return 1
    return one(x-1)+one(x-2)#第1次参数等于20,也就是x=20,直接执行这句。这句首先调用one(19)
                                           #再调用 one(18),再计算one(19)+one(18)。
                                           #从数学上理解:one(19)+one(18)=(one(18)+one(17))+(one(17)+one(16))
                                           #自己试试把右边分解推算下咯。

print(one(20))       #程序从这里开始运行,把20作为参数传入并调用内嵌函数one()
页: [1]
查看完整版本: 求大神解答