2012-10-07 35 views
3

如何在不使用“if”的情况下在int斐波那契语(int n)中编写代码如下所示Java recursive Fibonacci sequence? 我试图写这一点,但它是错误的: 因为在此程序中的列表将是1 1 2 3 5 8而不是0 1 1 2 3 5 8如何在不使用if语句的情况下编写斐波那契Java程序

这里是我试图写程序:

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(); 
    } 
} 
+0

下面是我试图编写的程序:公共类Fibonacci public static void main(String [] args){int 0; 0; 0; 0; 0; int g = 1;对于(int i = 1; i <= 10; i ++){ f = f + g; g = f-g; System.out.print(f +“”); } System.out.println(); } } –

+0

您可以编辑您的帖子以添加代码.. –

回答

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

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; 
    } 
} 
11

纯公式计算Fibonacci数:

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)); 
} 

希望这有助于...

+2

+1让我知道这个 – exexzian

+0

的数学公式@sansix,谢谢,很高兴帮助! –

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 + " "); 
     } 
} 
+2

't = f +(f = t)'让我头疼。 –

+0

@ Code-Guru它简单地将两个陈述/步骤过程合并为一个 – exexzian

+0

@sanix是的,我知道了......经过一点努力。 –