Python--斐波那契数列
2023-04-14 本文已影响0人
阳光小镇少爷
第一种递归法
image.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
第二种递推法
image.png
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
递推法,就是递增法,时间复杂度是 O(n),呈线性增长,如果数据量巨大,速度会越拖越慢
第三种生成器
image.png
带有yield的函数都被看成生成器,生成器是可迭代对象,且具备iter和 next方法, 可以遍历获取元素, python要求迭代器本身也是可迭代的,所以我们还要为迭代器实现iter方法,而iter方法要返回一个迭代器,迭代器自身正是一个迭代器,所以迭代器的iter方法返回自身即可
第四种类实现内部魔法方法
image.png