斐波那契序列。奇怪的输出形式(Haskell)
当我在Haskell中观看Fibobacci序列实现的结果时,我意识到数字的optput中有一些“奇怪”的形式 首先,这是我提出的Haskell代码:斐波那契序列。奇怪的输出形式(Haskell),haskell,sequence,fibonacci,Haskell,Sequence,Fibonacci,当我在Haskell中观看Fibobacci序列实现的结果时,我意识到数字的optput中有一些“奇怪”的形式 首先,这是我提出的Haskell代码: fib :: Integer -> [Integer] fib 0 = [0] fib 1 = [0, 1] fib a = (fib' 0 1 [0,1] 1 a) fib' :: Integer -> Integer -> [Integer] -> Integer -> Integer -> [Integ
fib :: Integer -> [Integer]
fib 0 = [0]
fib 1 = [0, 1]
fib a = (fib' 0 1 [0,1] 1 a)
fib' :: Integer -> Integer -> [Integer] -> Integer -> Integer -> [Integer]
fib' n1 n2 l cont n
| cont == n = l
| otherwise = (fib' n2 n3 (l++[n3]) (cont+1) n)
where n3 = n2 + n1
对于类似fib 10的东西,输出将是:[0,1,1,2,3,5,8,13,21,34,55]
然后我想尝试像fib 1000这样的东西,而数字是难以置信的大,所有。。。我看到的是由“,”组成的一些奇怪的省略号,它在列表中的每个整数之间打印出来,例如:
因此,我将输出窗口的大小设为最大,以查看这种奇怪的模式是否仍会重复,答案是肯定的:
我的问题是:
有人知道为什么在列表中的整数之间出现这种模式吗?
它是不是应该更随机,更不像是省略号?当你开始思考它时,没有什么奇怪的。相邻的斐波那契数具有相似的长度,且长度随序列的增加而增加。因此,假设屏幕大小为30个字符,当前的
F(n)
有29位数字,那么接下来的几个数字的长度可能是:
29, 29, 29, 30, 30, 30, 31, 31, 31
这使您可以向左->稳定->向右移动。n的斐波那契数
十进制数的长度基本上是以10为底的对数。因此,斐波那契曲线的长度就像n的线性函数一样增长,因为对数和指数相互抵消
因此,如果您将它们打印在一列中,您将看到一条直线。但是你一个接一个地打印它们,所以位置会累积。如果你对一个线性序列求累积和,你会得到一个二次序列
局部而言,每一行包含大约相同数量的斐波那契数,我们称之为k。这意味着两件事:
所以你看到的是一条抛物线——二次函数的图形。非常有意义,thanx!另请看。这将是惊人的