迭代斐波那契数列

2024-04-19 01:07:09 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我想遍历Fibonacci序列(但这可能适用于任何非算术序列)。我写了一个函数fibonacci:

from math import sqrt
def F(n):
    return ((1+sqrt(5))**n-(1-sqrt(5))**n)/(2**n*sqrt(5))

它返回任何给定输入的fibonacci数。这一点似乎行得通。但是,我想包括一些条件,比如偶数和F(n)低于某个限制。我试着用这样的if循环:

^{pr2}$

但是看起来你不能像我那样在for循环的迭代中使用F(n)。我完全是python的新手,那么如何使用我创建的F(n)函数来迭代序列呢?谢谢


Tags: 函数fromimportreturnifdef序列math
1条回答
网友
1楼 · 发布于 2024-04-19 01:07:09

您要运行fibonacci数的n的范围是什么?
你对斐波那契的定义是封闭的,所以你需要给出你想要计算的每个数字:

import itertools
count = 0
for n in itertools.count(1):
    if F(n) > 4000000:
        break
    if F(n) % 2 == 0:
        count += F(n)

您可以使用fibonacci的生成器形式并使用itertools.takewhile()来限制输出:

^{pr2}$

相关问题 更多 >