遍历斐波那契数列
Iterating through the Fibonacci sequence
所以我想遍历斐波那契数列(但这可能适用于任何非算术数列)。我写了一个函数 fibonacci:
from math import sqrt
def F(n):
return ((1+sqrt(5))**n-(1-sqrt(5))**n)/(2**n*sqrt(5))
其中 returns 任何给定输入的斐波那契数。这一点似乎工作正常。但是,我想包括几个条件,例如偶数和低于某个限制的 F(n)。我尝试使用这样的 if 循环:
def ser():
count = 0
for i in F(n):
if F(n) <= 4000000 and F(n) % 2 == 0:
count = count + F(n)
但是你好像不能像我一样在for循环的迭代中使用F(n)。我是 python 的完全新手,那么如何最好地使用我创建的 F(n) 函数来迭代序列?谢谢
您正在寻找 运行 斐波那契数的 n
范围是多少?
您对斐波那契的定义是封闭形式,因此您需要给出每个要计算的数字:
import itertools
count = 0
for n in itertools.count(1):
if F(n) > 4000000:
break
if F(n) % 2 == 0:
count += F(n)
您可以使用生成器形式的斐波那契并使用 itertools.takewhile()
来限制输出:
def F():
a,b = 0,1
yield b
while True:
a, b = b, a + b
yield b
count = sum(f for f in it.takewhile(lambda x: x <= 4000000, F()) if f % 2 == 0)
所以我想遍历斐波那契数列(但这可能适用于任何非算术数列)。我写了一个函数 fibonacci:
from math import sqrt
def F(n):
return ((1+sqrt(5))**n-(1-sqrt(5))**n)/(2**n*sqrt(5))
其中 returns 任何给定输入的斐波那契数。这一点似乎工作正常。但是,我想包括几个条件,例如偶数和低于某个限制的 F(n)。我尝试使用这样的 if 循环:
def ser():
count = 0
for i in F(n):
if F(n) <= 4000000 and F(n) % 2 == 0:
count = count + F(n)
但是你好像不能像我一样在for循环的迭代中使用F(n)。我是 python 的完全新手,那么如何最好地使用我创建的 F(n) 函数来迭代序列?谢谢
您正在寻找 运行 斐波那契数的 n
范围是多少?
您对斐波那契的定义是封闭形式,因此您需要给出每个要计算的数字:
import itertools
count = 0
for n in itertools.count(1):
if F(n) > 4000000:
break
if F(n) % 2 == 0:
count += F(n)
您可以使用生成器形式的斐波那契并使用 itertools.takewhile()
来限制输出:
def F():
a,b = 0,1
yield b
while True:
a, b = b, a + b
yield b
count = sum(f for f in it.takewhile(lambda x: x <= 4000000, F()) if f % 2 == 0)