在 Java 中使用递归方法实现 class 斐波那契数列
Implementing class Fibonacci with a recursive method in Java
这是我的代码中与问题解决相关的部分
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;
}
它是我创建的斐波那契 class 的一部分,它有一个构造函数、一个 getter 和 setter 方法。
我的目标是在控制台中实现并打印偶数斐波那契数
例如2、8、34...等等
在 main 方法中,每当我在对象上应用该方法时,我都会收到一条 java.lang.WhosebugError 消息,指出进行赋值的行有问题。
我该怎么办?
您需要一种方法来计算 nth 斐波那契数和 returns 结果 — 所以您必须 告诉 它你想要斐波那契数列中的哪个数字。
那需要一个参数。
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)
}
斐波那契数列的计算可以通过执行下面的方法来完成。
public long Recursiv(int n)
{
if (0 == n)
return 0;
else if (1 == n)
return 1;
else
return this.Recursiv(n - 1) + this.Recursiv(n - 2)
}
然而,这需要更改方法的签名。
编辑:
显然我有点误解了这个问题;所需的参数在构造函数中给出,该方法应使用具有较小参数的实例进行评估。该方法还可以实现如下。
public long Recursiv()
{
if(this.getNumar() == 0)
return 0;
if(this.getNumar() <= 2)
return 1;
else
return new Fibonacci(this.getNumar() - 2).Recursiv()
+ new Fibonacci(this.getNumar() - 1).Recursiv();
}
这是我的代码中与问题解决相关的部分
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;
}
它是我创建的斐波那契 class 的一部分,它有一个构造函数、一个 getter 和 setter 方法。
我的目标是在控制台中实现并打印偶数斐波那契数 例如2、8、34...等等
在 main 方法中,每当我在对象上应用该方法时,我都会收到一条 java.lang.WhosebugError 消息,指出进行赋值的行有问题。
我该怎么办?
您需要一种方法来计算 nth 斐波那契数和 returns 结果 — 所以您必须 告诉 它你想要斐波那契数列中的哪个数字。
那需要一个参数。
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)
}
斐波那契数列的计算可以通过执行下面的方法来完成。
public long Recursiv(int n)
{
if (0 == n)
return 0;
else if (1 == n)
return 1;
else
return this.Recursiv(n - 1) + this.Recursiv(n - 2)
}
然而,这需要更改方法的签名。
编辑:
显然我有点误解了这个问题;所需的参数在构造函数中给出,该方法应使用具有较小参数的实例进行评估。该方法还可以实现如下。
public long Recursiv()
{
if(this.getNumar() == 0)
return 0;
if(this.getNumar() <= 2)
return 1;
else
return new Fibonacci(this.getNumar() - 2).Recursiv()
+ new Fibonacci(this.getNumar() - 1).Recursiv();
}