网站开发移动端,承接网站网站建设,二手网站开发文档模板,城建局斐波那契数列当年#xff0c;典型的递归题目#xff0c;斐波那契数列还记得吗#xff1f;def fib(n):if n1 or n2:return 1else:return fib(n-1)fib(n-2)当然, 为了程序健壮性#xff0c;加上try...except...def fib(n):if isinstance(n, int):print(兄弟,输入正整数哈)ret…斐波那契数列当年典型的递归题目斐波那契数列还记得吗def fib(n):if n1 or n2:return 1else:return fib(n-1)fib(n-2)当然, 为了程序健壮性加上try...except...def fib(n):if isinstance(n, int):print(兄弟,输入正整数哈)returntry:if n1 or n2:return 1elif n 0:print(兄弟别输入0或负数呀)else:return fib(n-1)fib(n-2)except RecursionError:print(兄弟超过了最大递归深度是的无论时间还是空间复杂度递归真的是不太好使哈这是递归的写法:def fib(n):if n1 or n 2:return 1a, b 1, 1for i in range(2, n):a, b b, abreturn b我稍微解释三点为啥是range(2, n)因为斐波那契数列从 1 开始所以 fib(n) 就是数列的第 n 项由于前两项都为 1 ,所以要少两项为 range(2, n)(要循环 n-2 次)a, b b, ab 这里你也许也有困惑我简单说说一般Python解释器会将逗号分隔的变量直接看做一个元组又因为解释器先执行等式右边的所以这样相当于 元组拆包a, b b, ab 这句话的精髓在于在等式右边将 b 视为fib(n-2) ,将 ab 视为 fib(n-1)杨辉三角同样先写递归写法(我这里不考虑特殊情况了时间有限):def YH_tri(a, b):if a b or b 0:return 1else:return YH_tri(a-1, b)YH_tri(a-1, b-1)老铁们自己先想想该怎么写总结以上所述是小编给大家介绍的提升Python效率之使用循环机制代替递归函数,希望对大家有所帮助如果大家有任何疑问请给我留言小编会及时回复大家的。在此也非常感谢大家对我们网站的支持如果你觉得本文对你有帮助欢迎转载烦请注明出处谢谢本文标题: 提升Python效率之使用循环机制代替递归函数本文地址: http://www.cppcns.com/jiaoben/python/266539.html