最近,我开始测试一些我已经考虑了一段时间的东西。斐波那契序列方案有多种方法可以解决,但在本例中我尝试做一些稍微不同的事情。我正在尝试对用户在 CLI 中给出的数字使用递归。这是我到目前为止所得到的。我提供了一个似乎可以用于比较目的的迭代版本。
用户在 CLI 中给出的数字:4 和 6。数字 9 是此处的 n。
迭代:
1: ite: 6
2: ite: 10
3: ite: 16
4: ite: 26
5: ite: 42
6: ite: 68
7: ite: 110
8: ite: 178
9: ite: 288
递归:
1: rec: 16
2: rec: 33
3: rec: 59
4: rec: 102
5: rec: 171
6: rec: 283
7: rec: 464
8: rec: 757
9: rec: 1231
递归版本的方法: 这里 num0 和 num1 是保存 CLI 给出的值的变量。
public int Recursive(int n) {
//....
int a = num0;
int b = num1;
if(n < 0)
{
return n;
}else{
int c = a+b;
a = b;
b = c;
return Recursive(n-1)+Recursive(n-2)+c;
}
}
任何想法或想法都将不胜感激。
最佳答案
您可以使用辅助函数来完成此操作。
public int Recursive(int n) {
// ....
int a = 4;
int b = 6;
System.out.println(a);
System.out.println(b);
n--;
return RecursiveFib(a, b, n);
}
private int RecursiveFib(int a, int b, int n) {
if (n < 1) {
return b;
} else {
System.out.println(a + b);
int tmp = a;
a = b;
b += tmp;
n--;
return RecursiveFib(a, b, n);
}
}
由于您的起始数字可以是任意的,因此应用 fib(n-1) + fib(n-2) 逻辑是不同的,除非您存储所有数字。
关于java - 斐波那契使用递归从用户在 Java CLI 中给出的两个任意数开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48287340/