📜  非斐波那契数(1)

📅  最后修改于: 2023-12-03 15:42:26.378000             🧑  作者: Mango

非斐波那契数

斐波那契数列是指数列的第一项为 1 ,第二项为 1,从第三项开始,每一项都是前两项的和。即数列 A 中,A[0] = A[1] = 1, A[i] = A[i-1] + A[i-2], i>=2。

但是,除了斐波那契数列外,还存在很多其它的数列,它们也具有递推性质,但是并不相同。

本文将介绍一些非斐波那契数列,它们同样有着重要的数学意义与应用。

塔什数

塔什数列的第一项为 0,第二项为 1,从第三项开始,每一项都是前一项的平方减去前两项的平方。即数列 A 中,A[0] = 0,A[1] = 1,A[i] = A[i-1] * A[i-1] - A[i-2] * A[i-2],i>=2。

塔什数列可以被用于描述根据斐波那契数列构造出的一些类似golden ratio的数学结构。塔什数与golden ratio的关系是两倍的square root of three。这个特殊的数学结构与对称性、谐振现象和化学分子结构等领域有着广泛的应用。

以下是塔什数列的 Python 实现:

def tash(n: int) -> int:
    if n == 0:
        return 0
    if n == 1:
        return 1
    return tash(n-1)**2 - tash(n-2)**2
丧心病狂数

丧心病狂数列的第一项为 1,第二项为 1,从第三项开始,每一项都是前两项的平方和与它们的乘积之和。即数列 A 中,A[0] = A[1] = 1,A[i] = A[i-1] * A[i-1] + A[i-2] * A[i-2] + A[i-1] * A[i-2],i>=2。

丧心病狂数列的名字中的“丧心病狂”源于它对斐波那契数列的“疯狂”偏离。与斐波那契数列不同,它呈指数级增长,增长速度更快。

以下是丧心病狂数列的 Python 实现:

def crazy(n: int) -> int:
    if n == 0 or n == 1:
        return 1
    return crazy(n-1)**2 + crazy(n-2)**2 + crazy(n-1)*crazy(n-2)
希尔数

希尔数列的第一项为 1,第二项为 2,从第三项开始,每一项都是前一项乘以前两项的差。即数列 A 中,A[0] = 1,A[1] = 2,A[i] = A[i-1] * (A[i-1]-A[i-2]), i>=2。

希尔数列最初被用于破解密码。1917年,美国海军建议计算机科学家兼国际象棋爱好者唐纳德·希尔设计了一种密码加密算法,该算法使用了希尔数列。希尔数列用于密码学中的主要好处是它足够复杂,以至于破译需要耗费相当长的时间,这使得其在网络安全中有着广泛的应用。

以下是希尔数列的 Python 实现:

def shell(n: int) -> int:
    if n == 0:
        return 1
    if n == 1:
        return 2
    return shell(n-1)*(shell(n-1)-shell(n-2))
总结

除了斐波那契数列外,还存在很多其他的数列,它们也具有递推性质,但是并不相同。本文介绍了三个非斐波那契数列(塔什数、丧心病狂数、希尔数),它们同样有着重要的数学意义与应用。在编写程序时,你可以根据具体需求选择不同的数列来解决问题。