斐波那契数列:所有数字的总和
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;
}
}
我是 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;
}
}