我是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的总和。
答案 0 :(得分:2)
当您从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是一个完整的功能代码!
答案 1 :(得分:1)
您已退回斐波纳契数字。
如果你想同时返回:Fibonacci数+总和,你需要将方法类型改为一对。
如果您只想打印总和,请在该方法中添加以下行:
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);
...
}
答案 2 :(得分:1)
你只需要将每个斐波纳契的结果相加
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;
}
}