打印Fibonacci序列到第n位?

时间:2014-07-14 03:58:02

标签: java

我正在尝试将整个斐波纳契序列打印到给定的位置。因此,用户将决定他们想要查看的斐波那契序列的数量(最多16次重复),并且它将打印整个序列。

我当前的代码仅在您选择的地点的序列中打印数字。 例如:4打印2而不是0 1 1 2.

public int Fibonacci(int number){
    if(number == 1 || number == 2){
        return 1;
    }
    int fib1=1, fib2=1, fibonacci=1;
    for(int count= 3; count<= number; count++){
        fibonacci = fib1 + fib2;
        fib1 = fib2;
        fib2 = fibonacci;
    }
    return fibonacci;
}

这是我的主要方法:

import java.util.Scanner;

public class FibonacciPrinter 
{

    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        System.out.print("Enter an integer: ");
        int input = in.nextInt();

        FibonacciGenerator newNumber = new FibonacciGenerator();

        for(int fibCount = 0; fibCount < input; fibCount++)
        {
            System.out.println(newNumber.Fibonacci(input));
        } 
    }
}

1 个答案:

答案 0 :(得分:3)

我想在这里,

for(int fibCount = 0; fibCount < input; fibCount++)
{
  System.out.println(newNumber.Fibonacci(input));
} 

你几乎肯定想要,

for(int fibCount = 0; fibCount < input; fibCount++)
{
  System.out.println(newNumber.Fibonacci(fibCount)); // <-- fibCount not input
} 

您需要更新方法以处理零情况,例如

 public int Fibonacci(int number) {
   if (number == 0) return 0;
   // ...
 }

并且在Java中,约定将Fibonacci命名为fibonacci,因为方法名称是驼峰式的,以小写字母开头(类按照惯例以大写字母开头)。