如何解决如何验证要在我的函数中使用的这个序列 F(x)=F(x+y)+F(x-z)?
我正在编写一个使用斐波那契数列的程序:F(n)= F(n-1) + F(n-2)。该程序将接收用户输入的数字并输出序列 $F(x)$。作为一项附加任务,我被要求接受来自用户 y 和 z 的两个附加输入,其中 F(x)= F(xy) + F(xz) 和输出数字序列。如果序列中不存在数字,则输出 1。斐波那契数列似乎工作正常,但我不确定 F(x)=F(x+y)+F(x-z) 序列是否正确。下面是处理这两个序列的函数的代码片段:
function fibonacci(x,y,z) {
let fibos = [];
fibos[0] = 1;
fibos[1] = 1;
fibos[2] = 2;
if (y !== '' && z !== '') {
for (let i = 3; i < x; i++){
fibos[i] = fibos[x -y] + fibos[x - z]
}
} else {
for (let i = 3; i < x; i++){
fibos[i] = fibos[i -1] + fibos[i -2]
}
}
return fibos;
}
上面的函数接受三个参数 x,z。如果 y 和 z 未初始化,则函数将使用第二个序列,即斐波那契数列,但是,如果它们已初始化,则使用所讨论的函数,即 F(x)=F(x+y)+F (xz)。所以我的问题是我的函数在编程上是否正确,我如何从数学上理解这一点?
解决方法
F(x)= F(x-y) + F(x-z)
必须表示如下:
function fibonacci(x,y,z) {
let sequence = [0]; // f(0) = 0
let v1,// f(x-y)
v2; // f(x-z)
for (let i=1; i < x; i++) {
// f(x - y)
v1 = sequence[i - y];
// f(x-z)
v2 = sequence[i - z];
// If a number does not exist in the sequence output a 1 instead
if (typeof v1 === 'undefined')
v1 = 1;
if (typeof v2 === 'undefined')
v2 = 1;
sequence.push(v1 + v2)
}
return sequence
}
这也适用于 Fibonacci F(x) = f(x-1) - f(x-2)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。