java - 斐波那契使用递归从用户在 Java CLI 中给出的两个任意数开始

标签 java arrays recursion command-line-interface sequence

最近,我开始测试一些我已经考虑了一段时间的东西。斐波那契序列方案有多种方法可以解决,但在本例中我尝试做一些稍微不同的事情。我正在尝试对用户在 CLI 中给出的数字使用递归。这是我到目前为止所得到的。我提供了一个似乎可以用于比较目的的迭代版本。

用户在 CLI 中给出的数字:4 和 6。数字 9 是此处的 n

迭代:

1: ite: 6 
2: ite: 10
3: ite: 16
4: ite: 26
5: ite: 42
6: ite: 68
7: ite: 110
8: ite: 178
9: ite: 288

递归:

1: rec: 16
2: rec: 33
3: rec: 59
4: rec: 102
5: rec: 171
6: rec: 283
7: rec: 464
8: rec: 757
9: rec: 1231

递归版本的方法: 这里 num0num1 是保存 CLI 给出的值的变量。

public int Recursive(int n) {
    //....
        int a = num0;
        int b = num1;
        if(n < 0)
        {
          return n;
        }else{
           int c = a+b;
           a = b;
           b = c;
          return Recursive(n-1)+Recursive(n-2)+c;     
        }
    }

任何想法或想法都将不胜感激。

最佳答案

您可以使用辅助函数来完成此操作。

public int Recursive(int n) {
    // ....
    int a = 4;
    int b = 6;
    System.out.println(a);
    System.out.println(b);
    n--;
    return RecursiveFib(a, b, n);
}

private int RecursiveFib(int a, int b, int n) {
    if (n < 1) {
        return b;
    } else {
        System.out.println(a + b);
        int tmp = a;
        a = b;
        b += tmp;
        n--;
        return RecursiveFib(a, b, n);
    }
}

由于您的起始数字可以是任意的,因此应用 fib(n-1) + fib(n-2) 逻辑是不同的,除非您存储所有数字。

关于java - 斐波那契使用递归从用户在 Java CLI 中给出的两个任意数开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48287340/

相关文章:

python - numpy where 函数的基础知识,它对数组有什么作用?

c - 递归计算到点的路径数

c++ - C++中通过递归查找目录和子目录

java - 难以从使用谷歌地图地点选择器 API 获得的位置传递数据并将其发送到 textView 以供用户查看位置

java - org.springframework.transaction.CannotCreateTransactionException : Could not open Hibernate Session for transaction

java - 在 Java 中迭代集合时递增值时出现奇怪的错误

java - ssh4 延迟初始化异常

javascript - 将 for in 循环更改为 for 循环

JavaScript,如何快速复制对象数组,但仅复制该对象中我需要的值

c - 寻找一组字符