【问题标题】:Fibonacci sequence will not print anything but the number that is inputted by the user斐波那契数列只打印用户输入的数字
【发布时间】:2020-08-30 05:35:14
【问题描述】:

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

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;
        }
            
    }
}

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

【问题讨论】:

    标签: java fibonacci


    【解决方案1】:

    这是因为您没有打印任何其他内容。 您的方法不打印任何内容(仅返回一个值),并且您的 main 不打印任何内容(除了“输入数字”)。

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

    【讨论】:

    • 我已经取出了 println,我不确定我做错了什么。它不允许我在返回后打印 n,如果它在它之前打印,它只会在我只需要 1 个数字时不断抛出数字。也许我在想这个。但是我一直在尝试写这个东西 3 个小时,看视频和查找教程,我就是不能让它做我想做的事
    • 你不能在 return 之后添加 println,因为 return 结束了方法(之后它不会运行任何东西)。在之前添加 println 返回看似随机的数字,因为每次调用该方法时,它都会输出一个数字(这包括递归)。但是,这也意味着最后一个数字输出应该是您想要的正确数字。或者,您可以使用以下命令打印最后一个输出: println ( fibonacci_test.Recursivefibonacci(n));
    • @WesleyHarrison 只是为了澄清 eClySe,把 print 放到你的 main 函数中,这样你就可以看到最终的输出了。
    【解决方案2】:

    返回Recursivefibonacci(n-1)+Recursivefibonacci(n-2);比将其存储在变量中更合适。

    【讨论】:

    • 这并不能回答问题,虽然风格是一件好事,但在这种情况下通常没有帮助。也许他正在使用实时调试器并将其保存到变量中以便于检查输出
    【解决方案3】:

    我在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;
            
    }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-04
      • 2013-04-11
      • 1970-01-01
      • 1970-01-01
      • 2022-11-27
      • 2016-01-21
      相关资源
      最近更新 更多