学习python的第一篇

今天学习了python的递归及其优化

学习地址:廖雪峰的官方网站

https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431756044276a15558a759ec43de8e30eb0ed169fb11000

递归函数的弊端:

在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。

优化:解决递归调用栈溢出的方法是通过尾递归(优化尾递归是指,在函数返回的时候,调用自身本身,并且,return语句不能包含表达式。这样,编译器或者解释器就可以把尾递归做优化,使递归本身无论调用多少次,都只占用一个栈帧,不会出现栈溢出的情况。)

举例:

1.

优化前


学习python的第一篇_第1张图片
优化后

今日练习:

1。

学习python的第一篇_第2张图片
汉诺塔的递归实现

2.

学习python的第一篇_第3张图片
杨辉三角的迭代实现

你可能感兴趣的:(学习python的第一篇)