斐波那契和(Java)

斐波那契和(Java),java,recursion,netbeans,fibonacci,Java,Recursion,Netbeans,Fibonacci,最近,我一直在做一项赋值工作,以查找递归形式的数字(用户输入,正整数)的斐波那契和,例如(输出为): 9 = 8 + 1 14 = 13 + 1 30 = 21 + 8 + 1 等等 到目前为止,我已经制作了递归函数来计算实际的斐波那契数(例如9和中的8和1),它看起来如下所示: static long[] f = new long[50]; static long fib(int n) { if (n <= 1) { //base case return 1;

最近,我一直在做一项赋值工作,以查找递归形式的数字(用户输入,正整数)的斐波那契和,例如(输出为): 9 = 8 + 1 14 = 13 + 1 30 = 21 + 8 + 1 等等 到目前为止,我已经制作了递归函数来计算实际的斐波那契数(例如9和中的8和1),它看起来如下所示:

static long[] f = new long[50];

static long fib(int n) {
    if (n <= 1) { //base case
        return 1;
    }
    if (n < f.length) {
        if (f[n] != 0) {
            return f[n];
        }
        return f[n] = fib(n - 1) + fib(n - 2);
    }
    return fib(n - 1) + fib(n - 2);
}

您的函数中似乎存在各种问题:

  • 您的For循环没有结束。(当i为正时,增量i)
  • 您可以在for循环中存储:fib(i),以避免多次计算
  • 你不能根据你的if/else条件处理每一个案例 例如:

    n = 2. 
    fib(0) = 1
    if(2 - 1 == 0) => false
    if(2 < 1 && 2 > fib(-1)) => false && error.
    // Displays nothing. Should display: 2 = 1 + 1
    
    n=2。
    fib(0)=1
    如果(2-1==0)=>false
    如果(2<1&&2>fib(-1))=>false&&error。
    //不显示任何内容。应显示:2=1+1
    
    终于找到了答案,这次使用了while循环。无论我尝试了多少次修复for循环,我的输出都会遇到问题,因此我使用了一个布尔变量,并在达到n=0时将其设为false

    我认为由于fib函数的基本情况n
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("Please enter an integer number: ");
        int n = scan.nextInt();
        fibSum(n);
    
    n = 2. 
    fib(0) = 1
    if(2 - 1 == 0) => false
    if(2 < 1 && 2 > fib(-1)) => false && error.
    // Displays nothing. Should display: 2 = 1 + 1