怎么在Python中利用循环机制代替递归函数

  介绍

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

<强>斐波那契数列

当年,典型的递归题目,斐波那契数列还记得吗?

def  fib (n):   if 才能;n==1,趁机n==2:   ,,,return  1   其他的才能:   ,,,return  fib (n - 1) + fib (n - 2)

当然,为了程序健壮性,加上<代码>,试一试…除了…

def  fib (n):   if 才能isinstance (n, int):   ,,,print(& # 39;兄弟,输入正整数哈& # 39;)   ,才能返回   尝试才能:   ,,,if  n==1,趁机n==2:   ,,,,,return  1   ,,,elif  n  & lt;=, 0:   ,,,,,印刷(& # 39;兄弟别输入0或负数呀& # 39;)   ,,,:   ,,,,,return  fib (n - 1) + fib (n - 2)   except 才能;RecursionError:   ,,,print(& # 39;兄弟,超过了最大递归深度& # 39;

是的,无论时间还是空间复杂度,递归真的是不太好使哈!这是递归的写法:

def  fib (n):   if 才能;n==1,趁机n ==, 2:   ,,,return  1   ,,,b =1,, 1   for 才能小姐:拷贝范围(2,,n):   ,,,,,b =, b, a + b   return 才能;b

我稍微解释三点:

<李>

为啥是<代码>,范围(2 n)> <李>

由于前两项都为,1,所以要少两项,为,<代码>范围(2 n)> <李>

a, b=b, a + b这里你也许也有困惑,我简单说说,一般Python解释器会将逗号分隔的变量直接看做一个元组,,

<李>

又因为,解释器先执行等式右边的,所以,这样相当于,元组拆包

<李>

a, b=b, a + b这句话的精髓在于,在等式右边将,b视为<代码>,fib (n - 2)>

<强>杨辉三角

同样,先写递归写法(我这里不考虑特殊情况了,时间有限):

def  YH_tri (a, b):   if 才能;a ==, b 或是b ==, 0:   ,,,return  1   其他的才能:   ,,,return  YH_tri (a - 1, b) + YH_tri (a - 1, b - 1)

看完上述内容,你们对怎么在Python中利用循环机制代替递归函数有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

怎么在Python中利用循环机制代替递归函数