函数执行流程
def foo1(b,b1=3): print("foo1 called",b,b1) def foo2(c): foo3(c) print("foo2 called",c) def foo3(d): print("foo3 called",d) def main(): print("main called") foo1(100,101) foo2(200) print("main ending ")
函数执行过程:
函数中压栈,执行流程。
递归Recursion
递归要求
斐波那契数列实现(f(1)=1,f(2)=1,f(3)=f(1)+f(2),f(4)=f(2)+f(3)……)
#斐波那契数列普通循环实现 a,b=0,1 for i in range(4): a,b=b,a+b print(a) #斐波那契数列函数递归实现 def foo(n): #大量的重复计算 return 1 if n<3 else foo(n-1)+foo(n-2) #斐波那契数列函数循环实现 def fn(n,a=0,b=1): a,b=b,a+b if n==1: return a return fn(n-1,a,b)
递归的性能
循环稍微复杂一些,但是只要不是死循环,可以多次迭代直至算出结果
递归还有深度限制,如果递归复杂,函数反复压栈,栈内存很快会溢出
间接递归
def foo1(): foo2() def foo2(): foo1()
间接递归,是通过别的函数调用了函数自身,但是如果构成了循环递归调用是非常危险的,但是往往这种情况在代码复杂的情况下,还是有可能发生这种调用的,要用代码的规范来避免这种递归调用的发生
递归总结
以上所述是小编给大家介绍的python递归函数详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对亿速云网站的支持!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。