3

在不使用“if”的情况下用 int Fibonacci (int n) 编写的代码是什么,就像他们在这里所做的Java recursive Fibonacci sequence一样?我试图写这个,但它是错误的:因为在这个程序中,列表将是 1 1 2 3 5 8 而不是 0 1 1 2 3 5 8

这是我尝试编写的程序:

public class Fibonacci
{
    public static void main(String[] args)
    {
        int f = 0;
        int g = 1;

        for(int i = 1; i <= 10; i++)
        {
            f = f + g;
            g = f - g;
            System.out.print(f + " ");
        }

        System.out.println();
    }
}
4

4 回答 4

11

计算斐波那契数的纯公式:

public double getFibonacci(int n) {
    double f1 = Math.pow(((1 + Math.sqrt(5)) / 2.0), n);
    double f2 = Math.pow(((1 - Math.sqrt(5)) / 2.0), n);

    return Math.floor((f1 - f2) / Math.sqrt(5));
}

希望这可以帮助...

于 2012-10-07T19:33:05.843 回答
9

你的程序是完全正确的;您需要更改的只是打印语句的位置:

public static void main(String[] args) {
  int f = 0;
  int g = 1;

  for(int i = 1; i <= 10; i++)
  {
    System.out.print(f + " ");
    f = f + g;
    g = f - g;
  } 

  System.out.println();
}

或者,打印g而不是f.

于 2012-10-07T19:19:44.173 回答
4

这里没有 if 语句:

public static void printFib(final int N) { 
    int f0 = 0; 
    int f1 = 1; 

    for (int i = 0; i < N; ++i) { 
        System.out.println(f0);   
        final int temp = f1; 
        f1 += f0; 
        f0 = temp; 
    } 
}
于 2012-10-07T19:08:37.640 回答
2

这是我遵循的一个,它很短并且不使用if

    public class ShortFibboCode{

    public static void main(String a[]) {
        int f = 0;
        int numUpto = 10; // number of series upto - change accordingly
        for(int t = 1; f < numUpto; t = f + (f = t))
            System.out.print((f + " ");
        }
}
于 2012-10-07T19:42:52.680 回答