怎么在Python中利用循环机制代替递归函数-创新互联
                                            今天就跟大家聊聊有关怎么在Python中利用循环机制代替递归函数,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

斐波那契数列
当年,典型的递归题目,斐波那契数列还记得吗?
def fib(n): if n==1 or n==2: return 1 else: return fib(n-1)+fib(n-2)
当然, 为了程序健壮性,加上 try...except...
def fib(n):
  if isinstance(n, int):
    print('兄弟,输入正整数哈')
    return
  try:
    if n==1 or n==2:
      return 1
    elif n <= 0:
      print('兄弟别输入0或负数呀')
    else:
      return fib(n-1)+fib(n-2)
  except RecursionError:
    print('兄弟,超过了大递归深度'是的,无论时间还是空间复杂度,递归真的是不太好使哈!这是递归的写法:
def fib(n): if n==1 or n == 2: return 1 a, b = 1, 1 for i in range(2, n): a, b = b, a+b return b
我稍微解释三点:
- 为啥是 - range(2, n),因为,斐波那契数列从 1 开始,所以 fib(n) 就是数列的第 n 项
- 由于前两项都为 1 ,所以要少两项,为 - range(2, n)(要循环 n-2 次)
- a, b = b, a+b 这里你也许也有困惑,我简单说说,一般Python解释器会将逗号分隔的变量直接看做一个元组, 
- 又因为,解释器先执行等式右边的,所以,这样相当于 元组拆包 
- a, b = b, a+b 这句话的精髓在于,在等式右边将 b 视为 - fib(n-2),将 a+b 视为 fib(n-1)
杨辉三角
同样,先写递归写法(我这里不考虑特殊情况了,时间有限):
def YH_tri(a, b): if a == b or b == 0: return 1 else: return YH_tri(a-1, b)+YH_tri(a-1, b-1)
看完上述内容,你们对怎么在Python中利用循环机制代替递归函数有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。
分享标题:怎么在Python中利用循环机制代替递归函数-创新互联
路径分享:http://www.scyingshan.cn/article/cogesi.html

 建站
建站
 咨询
咨询 售后
售后
 建站咨询
建站咨询 
 