斐波那契数列除了用户输入的数字外不会打印任何内容

Fibonacci sequence will not print anything but the number that is inputted by the user

这是我的主要方法,我试图调用斐波那契数列来告诉我用户输入位置的数字是多少:

import java.util.Scanner; //import Scanner

public class Main {
    public static void main(String[] args) {
         
       System.out.println("enter number");
       Scanner input = new Scanner(System.in); 
       int n = input.nextInt();
         
       Fibonacci fibonacci_test = new Fibonacci();
       fibonacci_test.Recursivefibonacci(n);
         
    }
}

这是我的斐波那契代码:

public class Fibonacci {
//Fn=F(n-1)+F(n-2)
    
        
    //The recursive Fibonacci method 
    public int Recursivefibonacci(int n) {
       
        if(n==0) {
            return 0;
        } if(n==1) {
            return 1;
        }else {
            
        int fib = Recursivefibonacci(n-1)+Recursivefibonacci(n-2);
        return fib;
        }
            
    }
}

我无法让这个东西打印任何东西。我该如何解决这个问题?

这是因为您没有打印其他任何东西。 您的方法不打印任何内容(只是 returns 一个值),并且您的主要方法不打印任何内容(除了“输入数字”)。

您可以尝试将:fibonacci_test.Recursivefibonacci(n); 更改为 println (fibonacci_test.Recursivefibonacci(n));

return Recursivefibonacci(n-1)+Recursivefibonacci(n-2);而不是将其存储在变量中更合适。

这是我在python做的,你可以看看,尝试适配到java,也许对你有帮助。递归可能令人头疼,但看起来不错。

def fib(n):
    if n == 0:
        return 0
    if n <= 1:
        return 1
    res = (fib(n-1)+ fib(n-2))
    return res

/////// 您的代码可能看起来像这样:

public int Recursivefibonacci(int n) {
    if(n == 0){
       return 0;

}
if(n <= 1) {
   return 1;
    } 

    int fib = Recursivefibonacci(n-1)+Recursivefibonacci(n-2);
    return fib;
        
}

试试吧!让我知道它是否有效。