如何验证要在我的函数中使用的这个序列 F(x)=F(x+y)+F(x-z)?

如何解决如何验证要在我的函数中使用的这个序列 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?