斐波那契数列:所有数字的总和

Fibonacci Sequence : Sum of all numbers

我是 Java 的新手,这是我必须做的:

顺序如下:1, 1, 2, 3, 5, 8, 13, 21, ....等

序列中的下一个数字是前两个数字的总和

编写一个程序,让用户输入一个数n,然后计算数列的第n个数和数列中的数之和。

例如,第 5 个数字是 5,该数字的总和是 12

这不是重复问题,因为我的问题与其他问题不同,而且我的代码也不同。这是我到目前为止所做的:

public class fibonnacifinal {

    public static void main(String args[]) {
        System.out.println("Enter number upto which Fibonacci series to print: ");
        int number = new Scanner(System.in).nextInt();
        System.out.println("\n Fibonacci number at location " + number + " is ==> " + (fibonacciLoop(number) + ""));
    }

    public static int fibonacciLoop(int number) {
        if (number == 1 || number == 2) {
            return 1;
        }

        int fibo1 = 1, fibo2 = 1, fibonacci = 1;
        for (int i = 3; i <= number; i++) {
            fibonacci = fibo1 + fibo2; // Fibonacci number is sum of previous two Fibonacci number
            fibo1 = fibo2;
            fibo2 = fibonacci; 
        }
        return fibonacci; // Fibonacci number
    }
}

我遇到的问题是我无法获取要添加和打印的号码。例如,如果用户输入 7,我可以让它说第 7 个数字是 13,但我无法让它打印出总和为 33。

i = 3 开始,您可以在 fibonacciLoop(int number) 中使用以下内容:

int sum = 2;
for (int i = 3; i <= number; i++) {
    fibonacci = fibo1 + fibo2; 
    fibo1 = fibo2;
    fibo2 = fibonacci;
    sum = sum + fibonacci;
}
System.out.println("Sum: " +sum); //print before return fibonacci

注意,很快 int sum 将因大斐波那契数而溢出。

Here 是给你的完整功能代码!

您已经 return 斐波那契数列。

如果你想要return两者:斐波那契数+总和,你需要将方法类型更改为一对。

如果您只想打印总和,请在该方法中添加以下行:

public static int fibonacciLoop(int number) {
    int sum = 0;
    if (number == 1) { // 1
        System.out.println("1");
    } else if (number == 2) { // 1, 1
        System.out.println("2");
    } else {
        sum = 2;
    }
    ...
    for (int i = 3; i <= number; i++) {
        ...
        sum += fibonacci;
    }
    System.out.println(sum);
    ...
}

你只需要对每个斐波那契的结果求和

    public class Fibonnacifinal {
        public static void main(String args[]) {
            System.out
                    .println("Enter number upto which Fibonacci series to print: ");
            int number = new Scanner(System.in).nextInt();
            System.out.println("\n Sum of Fibonacci numbers at location " + number
                    + " is ==> " + (fibonacciLoop(number) + ""));
        }

        public static int fibonacciLoop(int number) {
            // Fib(1) = 1, returns 1
            // Fib(2) = 2, returns 2 which is the sum of Fib(1) + Fib(1)
            if (number < 3) {
                return number;
            }

            int sum = 2; // 2 is the sum till Fib(2)
            int fibo1 = 1, fibo2 = 1, fibonacci = 1;
            for (int i = 3; i <= number; i++) {
                fibonacci = fibo1 + fibo2;
                sum += fibonacci;
                fibo1 = fibo2;
                fibo2 = fibonacci;
            }

            return sum;
        }

    }