如何编写使用数组的Fibonacci序列?

时间:2011-04-11 18:53:52

标签: java

以下是代码:

class Fibonacci {
    static final int MIN_INDEX = 1;
    public static void main (String[] args){
        int high = 1;
        int low = 1;
        String jel;
        System.out.println("9: " + high);

      for (int i = 8; i >= MIN_INDEX; i--){
        if (high % 2 == 0)
          jel = " *";
        else 
          jel = " ";
        System.out.println(i + ": " + high + jel);
        high = low + high;
        low = high - low;
      }
   }
}

我想编写这个程序,将Fibonacci序列存储在一个数组中,然后写出来。但我无法写出来。我能做什么?我不需要用*来标记它们。

3 个答案:

答案 0 :(得分:1)

以下是步骤

  1. 计算您需要的Fibonacci序列号;存储每个值。
  2. 打印您计算的值。
  3. 计算并存储斐波纳契数

    Fibonacci序列是一个递归函数,但使用递归在任何问题语法中实现它都是荒谬的。而是使用循环。例如:

    int[] fibonacciNumbers = new int[20];
    fibonacciNumbers[0] = 0;
    fibonacciNumbers[1] = 1;
    
    for (int index = 2; index < fibonacciNumbers.length; ++index)
    {
        fibonacciNumbers[index] = fibonacciNumbers[index - 1] + fibonacciNumbers[index - 2];
    }
    
    

    打印数组

    遍历数组中的每个元素并根据需要打印它;例如,你可以System.out.println(fibonacciNumbers[index]);

答案 1 :(得分:0)

如果你只需要斐波那契数字对:

public class Fibonacci {       

    private int count = 0;

    public Integer next() {
        return fib(count++);
    }

    private int fib(int n) {
        if (n < 2) {
            return 1;
        }
        return fib(n - 2) + fib(n - 1);
    }

public static void main(String[] args) {
    List<Integer> pairFib = new ArrayList<Integer>();
    Fibonacci gen = new Fibonacci();
    for (int i = 0; i < 18; i++) {
        int current = gen.next();
        if (current % 2 == 0) {
            pairFib.add(current);
        }
    }
    System.out.println(pairFib);
}

}

答案 2 :(得分:0)

我认为这会回答你的问题(我还为一些悲观情景添加了处理):

public class Fibonacci
{
    public static void main(String[] args)
    {
        int[] fibMembers = buildFibArray(9);
        printFibArray(fibMembers);
    }

    private static void printFibArray(int[] fibMembers)
    {
        for (int i = 0; i < fibMembers.length; i++)
        {
            System.out.print(fibMembers.length-i);
            System.out.print(": ");
            System.out.print(fibMembers[i]);
            if (fibMembers[i] % 2 == 0)
            {
                System.out.print(" *");
            }
            System.out.println("");
        }
    }

    private static int[] buildFibArray(int maxIndex)
    {
        int[] fibMembers = new int[maxIndex];

        if (maxIndex > 0)
        {
            fibMembers[0] = 1;
            if (maxIndex > 1)
            {
                fibMembers[1] = 1;

                for (int i = 2; i < fibMembers.length; i++)
                {
                    fibMembers[i] = fibMembers[i-2] + fibMembers[i-1];
                }
            }
        }
        return fibMembers;
    }
}

buildFibArray方法构建数组 printFibArray方法打印数组 - 应该根据您的要求。