为什么非常大的斐波那契数会产生椭圆形?

Cas*_*erg 7 python largenumber fibonacci

in_range = int(input("range: "))

fibo_list = []

a = 0
b = 1
count = 0

if in_range < 0:
    print("faulty")
elif in_range == 0:
    print("faulty")
else:
    while count < in_range:
        c = a + b
        a = b
        b = c
        count += 1
        fibo_list.append(a)


print(fibo_list)
Run Code Online (Sandbox Code Playgroud)

这段代码的范围输入1000时,会产生很多椭圆形状,有些是很难看出来的。这似乎只发生在斐波那契数列中,而没有其他长数链。为什么是这样?这是椭圆的样子

Sha*_*ger 7

数字之间的空格的“形状”只是将数字与接近终端宽度的宽度(或宽度的倍数)对齐,同时缓慢增加位数的人工制品。斐波那契数列只是碰巧以大致适合看到“椭圆模式”出现的速度增加数字数量,但任何数字数量以类似速度增长的模式都会看到这样的模式。也许不在同一个地方,也许曲线更平缓或更陡峭,但相似。

举个简单的例子,打印1.5300 到 600 的截断幂会产生非常相似的模式:

print([int(1.5 ** i) for i in range(300, 600)])
Run Code Online (Sandbox Code Playgroud)

电源模式