有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java中用递归方法实现类Fibonacci的递归

这是我代码中与问题解决相关的部分

public long Recursiv(){
    Fibonacci fibo = new Fibonacci(this.getNumar());
    long fibnum;

    if(this.getNumar() == 0) return 0;
    if(this.getNumar() <= 2) return 1;
    else
        fibnum = (fibo.Recursiv()-1) + (fibo.Recursiv()-2);
        return fibnum;

}

它是我创建的Fibonacci类的一部分,它有一个构造函数、一个getter和setter方法

我的目标是在控制台中实现甚至打印斐波那契数 e、 g.2,8,34。。。等等

在main方法中,每当我在对象上应用该方法时,我都会收到一个java。lang.StackOverflower错误消息,带有一个问题,即进行赋值的行就是问题所在

我该怎么办


共 (1) 个答案

  1. # 1 楼答案

    你需要一种计算第n个fibonacci数并返回结果的方法,所以你必须告诉它你想要fibonacci序列中的哪个数
    这需要一个参数

    public long fib(int n) {
        ...
    }
    

    斐波那契数是前两个斐波那契数的和;就是

    fib(6) = fib(5) + fib(4)
    // or more generally
    fib(n) = fib(n-1) + fib(n-2)
    

    因此(不需要为您编写全部内容)您的方法需要接受传递必要的参数:

    public long fib(int n) {
        if (n == 0) return 0;
        //  etc.   handle the defined/degenerate cases
        return fib(n-1) + fib(n-2)
    }