Python

Python,第1张

Python

将Fib序列公式写成无穷大
在数学中,它以递归形式给出:

在编程中,不存在无限。你可以使用递归形式直接用你的语言翻译数学形式,例如在Python中,它将变为:

def F(n):    if n == 0: return 0    elif n == 1: return 1    else: return F(n-1)+F(n-2)

用你喜欢的语言尝试一下,随着n变大,这种形式需要很多时间。实际上,这是时间O(2 n)。

继续在我链接到你的网站上,将看到此信息(在Wolfram上):

斐波那契方程

这是一个非常容易实现并且非常非常快速的Python代码:

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

另一种方法是遵循定义(来自Wikipedia):

序列的第一个数字为0,第二个数字为1,每个后续数字等于序列本身前两个数字的和,得出序列0、1、1、2、3、5、8等

如果你的语言支持迭代器,则可以执行以下 *** 作:

def F():    a,b = 0,1    while True:        yield a        a, b = b, a + b

仅从Fib序列显示startNumber到endNumber。
一旦知道了如何生成斐波那契数,你只需循环遍历数字并检查它们是否验证了给定条件。

假设现在你编写了af(n)来返回斐波那契数列的第n个项(如带有sqrt(5)的项)

在大多数语言中,你可以执行以下 *** 作:

def SubFib(startNumber, endNumber):    n = 0    cur = f(n)    while cur <= endNumber:        if startNumber <= cur: print cur        n += 1        cur = f(n)

在python中,我将使用迭代器形式并进行以下 *** 作:

def SubFib(startNumber, endNumber):    for cur in F():        if cur > endNumber: return        if cur >= startNumber: yield curfor i in SubFib(10, 200):    print i

我的提示是学习阅读所需内容。欧拉计画(google for Euler)将会训练你这样做:P祝你好运,玩得开心!



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/4942996.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-13
下一篇 2022-11-13

发表评论

登录后才能评论

评论列表(0条)

保存