如何解决生成前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)
这为您提供了简化的公式,无需循环即可对其求值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。