创建一个程序,输入一个数字并提供其等效的斐波纳契数作为输出。但是我的代码有问题:c
import java.util.Scanner;
public class Fibonacci {
public static void main(String[] args) {
Scanner in = new Scanner (System.in);
int prev, next, num, sum = 0, n;
prev=next=1;
System.out.print("Input number: ");
num = in.nextInt();
if ((num == 1) || (num ==2))
System.out.println(prev);
else {
for( n=1; n<=prev; n++ ) {
sum = prev + next;
prev = next;
next = sum;
}
System.out.println(sum);
}
}
}
有些事我错了,我看不到。救命? :C
答案 0 :(得分:2)
当n
超过prev
时,您正在停止循环,因此您无法获得正确的数字。当你通过num
时停止它:
for(n = 1; n <= num; n++) {
示例运行:
Input number: 6
21
答案 1 :(得分:1)
将for循环更改为:
for( n=2; n<num; n++ )
那将解决你的问题。
说明: 由于你已经确定1或2会给你一个1,所以启动你的循环@ 2.循环直到n变得大于输入的数字。这将解决您遇到的问题。
答案 2 :(得分:0)
如果您想获得用户提供输入的fiboniki编号次数,那么您需要在for
循环中进行迭代。
for( n=1; n<=num; n++ ) {
sum = prev + next;
prev = next;
next = sum;
System.out.println(sum);
}
同时打印您需要将其放入循环中的数字。