生成前M个N-Bonacci数的数组

问题描述

我很难理解这个问题的解决方案:

我们要编写一个函数,该函数生成前M个N-Bonacci数字。因此,例如,如果N = 2,则这是斐波纳契数{0,1,2,3,5 ...}的序列。如果N = 3,则每个元素都是前3个数字的总和,{0,0,1,1,2,2,4,7,...}。

根据该问题的解决方案,第i个N-Bonacci数等于

.example-form { min-width: 150px; max-width: 500px; width: 100%; } td { height: 100%; } mat-form-field { height: 100%; }

有人可以解释一下这个想法是如何产生的吗?我知道这是一个动态编程问题,我只是不了解如何自行提出该公式。因此,从总体上讲,您如何看待这一点?

解决方法

我们知道:

BN(i)     = BN(i-1) + BN(i-2) +     ...       + BN(i-N)

那是

BN(i-1)             = BN(i-2) + BN(i-3) + ... + BN(i-N) + BN(i-N-1)

我所做的就是在定义中用i-i代替i

换句话说(从等式两边减去最后一项):

BN(i-1) - BN(i-N-1) = BN(i-2) + BN(i-3) + ... + BN(i-N)

现在,我将此方程式代入第一个方程式。 (您可以看到该等式的右侧恰好是第一个方程式的尾部,因此我可以用等式的左侧代替。)

BN(i)     = BN(i-1) + BN(i-1) - BN(i-N-1) 

这为您提供了简化的公式,无需循环即可对其求值。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...