第一种递归法
![](https://img.haomeiwen.com/i5342891/743bdffd3b4b063b.png)
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
写法最简洁,但是效率最低,会出现大量的重复计算,时间复杂度O(1.618^n),而且最大深度为1000
第二种递推法
![](https://img.haomeiwen.com/i5342891/6d7b3e7674b0e2c6.png)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
递推法,就是递增法,时间复杂度是 O(n),呈线性增长,如果数据量巨大,速度会越拖越慢
第三种生成器
![](https://img.haomeiwen.com/i5342891/183cb2957f920419.png)
带有yield的函数都被看成生成器,生成器是可迭代对象,且具备iter和 next方法, 可以遍历获取元素, python要求迭代器本身也是可迭代的,所以我们还要为迭代器实现iter方法,而iter方法要返回一个迭代器,迭代器自身正是一个迭代器,所以迭代器的iter方法返回自身即可
第四种类实现内部魔法方法
![](https://img.haomeiwen.com/i5342891/8d5d35a7c615ada8.png)
网友评论