我需要专门使用for循环在斐波那契数列中找到第n个项。我试图这样做,以便main方法告诉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]));
        }
    }
}

最佳答案

您必须更改for循环。

for(int i = 0; i < input - 1; i++) {
    fibonacci = num1 + num2;
    num1 = num2;
    num2 = fibonacci;
}


这样就足够了。

07-28 03:23
查看更多