个人在理解递归函数时,引入程序等待的想法。会发现很好理解了。

  • 举个例子,我们求[1,2,3,4,5,6,7,8,9,10]这样一个列表的值。通过递归函数来实现。

a =  [1,2,3,4,5,6,7,8,9,10]

def func(lista):

  if len(lista)==1:

     return lista[0]

  else:

    sum = lista[0]+func(lista[1:])

  return sum

f = func(a)

print(f)

 

 

第一次调用func函数时,把a传入func。判断lista的长度不等于0所有执行else里面的语句块。

也就是a[0] + [2,3,4,5,6,7,8,9,10]

此时a[0]+等待程序语句执行结束,也就是1+开始等待语句结束。

因为lista长度不等于1,继续执行 [2,3,4,5,6,7,8,9,10]

第二次调用函数func,结果:a[0]+[3,4,5,6,7,8,9,10]。也就是2+开始等待语句结束。
第三次调用函数func,结果:a[0]+[4,5,6,7,8,9,10]。也就是3+开始等待语句结束。

...

最后一次长度==1.语句结束,但是它上一层的语句还在等待执行。所以把最后一个元素10返回给它上一层。9+10算出结果,继续返回给上一层。直到最初位置1+,最后程序结束。

 

画个图会更好直观啦

个人对递归函数的小小理解

 

 

相关文章:

  • 2021-08-05
  • 2021-12-24
  • 2021-09-29
  • 2021-11-28
  • 2021-11-28
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-31
  • 2021-08-30
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案