我需要专门使用for循环来查找斐波那契序列中的第n个项。我试图这样做,以便主方法告诉方法generateFibonnaci它需要找到的第n个项,并将n分配为第二个for循环的极限,这将递归地找到第n个项,直到极限数n。例如,当输入为2时,计划让Fibonacci公式运行两次并返回1,但在这种情况下返回5。我怀疑问题出在for循环的参数之内,但我不确定。
class Fibonnaci
{
public static int generateFibonacci(int input)
{
int num1 = 0;
int num2 = 1;
int fibonacci = 0;
int n = 0;
for(int i = 0; i < input; i++)
{
n = input;
for(int j = 0; j < n; j++)
{
fibonacci = num1 + num2;
num1 = num2;
num2 = fibonacci;
}
}
return fibonacci;
}
public static void main(String [] args)
{
int [] inputs = {1, 2, 3, 4, 5, 6, 11, 16, 21, 31, 41, 46, 1, 1, 2, 11};
for(int i = 0; i < inputs.length; i++)
{
System.out.println(generateFibonacci(inputs[i]));
}
}
}
答案 0 :(得分:2)
您必须更改for
循环。
for(int i = 0; i < input - 1; i++) {
fibonacci = num1 + num2;
num1 = num2;
num2 = fibonacci;
}
这足够了。
答案 1 :(得分:0)
只是代替
n = input;
use this:
n = i;
在输出中打印负值的原因是 int不能在其中存储大量数字。由于int的大小。 我们正在处理的斐波那契数列从0开始。
答案 2 :(得分:0)
这应该是您问题的答案。
for (int j = 1; j <= input; j++) {
if (j == 1) {
fibonacci = num1;
continue;
}
if (j == 2) {
fibonacci = num2;
continue;
}
fibonacci = num1 + num2;
num1 = num2;
num2 = fibonacci;
}
不要使用外部for循环。