C语言写一个斐波那契数列

  下午正好有人问到这个问题,所以就写一个。
  斐波那契数列的实现我们可以很快想到——递推,即当前项等于前两项的和。但是这样还是略微令人不愉快,它是 O ( n ) O(n) O(n)的(虽然uint64也只能算到93项…性能差距不明显),我们有没有更快的方法呢?此时就该求助于数学了。
  简单的递归数列可以一般性的表示为
x n + k = λ 1 x n + k − 1 + λ 2 x n + k − 2 + ⋅ ⋅ ⋅ + λ n x n + q x_{n+k}=\lambda_1x_{n+k-1}+\lambda_2x_{n+k-2}+\cdot\cdot\cdot+\lambda_nx_n+q xn+k=λ1xn+k1+λ2xn+k2++λnxn+q  在初始值确定的时候,它被叫做 k k k阶常系数递归数列。而这样的一个k次方程就被称作上式的特征方程:
x k = λ 1 x k − 1 + λ 2 x k − 2 + ⋅ ⋅ ⋅ + λ k − 1 x + λ k x^{k}=\lambda_1x^{k-1}+\lambda_2x^{k-2}+\cdot\cdot\cdot+\lambda_{k-1}x+\lambda_k xk=λ1xk1+λ2xk2++λk1x+λk  对应的斐波那契数列表示为 a n + 2 = a n + 1 + a n , n > 2 a_{n+2}=a_{n+1}+a_{n},n>2 an+2=an+1+an,n>2,初始项为 a 1 = a 2 = 1 a_1=a_2=1 a1=a2=1,是确定的。它的特征方程就是:
x 2 = x + 1 x^2=x+1

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值