当前位置:  开发笔记 > 编程语言 > 正文

非线性递归关系

如何解决《非线性递归关系》经验,为你挑选了1个好方法。

如何找到此递归关系的第N个术语

F(n) = F(n-1) + F(n-2) + F(n-1)*F(n-2)

我必须找到这个递归关系模的第N个项10^9+7.

我知道如何找到线性递归关系的第N个术语,但无法继续进行此操作.

1<=N<=10^9

提供F(0)和F(1)作为输入.



1> David Eisens..:

有一个技巧.我们G(n) = F(n) + 1.等式

F(n) = F(n-1) + F(n-2) + F(n-1)*F(n-2)

G(n) - 1 = G(n-1) - 1 + G(n-2) - 1 + (G(n-1) - 1) * (G(n-2) - 1)
         = G(n-1) - 1 + G(n-2) - 1 + G(n-1)*G(n-2) - G(n-1) - G(n-2) + 1
         = G(n-1)*G(n-2) - 1,

所以1增加到双方,

G(n) = G(n-1)*G(n-2).

这是熟悉的斐波那契复发的乘法等价物.解决方案是

G(n) = G(0)^Fib(n-1) * G(1)^Fib(n),

通过类比线性递归理论(其中Fib(-1) = 1Fib(0) = 0Fib(1) = 1),因为

G(n-1)*G(n-2) = G(0)^Fib(n-2) * G(1)^Fib(n-1)
              * G(0)^Fib(n-3) * G(1)^Fib(n-2)
              = G(0)^Fib(n-1) * G(1)^Fib(n)
              = G(n).

因此,

F(n) = (F(0)+1)^Fib(n-1) * (F(1)+1)^Fib(n) - 1,

Fib通过p-1每个费马小定理和指数模的矩阵幂方法mod 进行计算p.


尼斯.所以关于`2**fibo(n)-1`的评论非常接近:).
推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有