2016-11-20 19 views
0

我是一個絕對的初學者,我想用acm.libary寫一個代碼,它是關於斐波那契數列的。Fibonnaci序列

結果對我來說非常好,但我只想打印序列的最後一個數字。我不知道如何。 如果用戶類型n = 5,結果需要爲8. 如果用戶類型n = 8,結果需要爲21. 在我的程序中它是最後一個號碼,但程序還打印出所有先前數字。

我希望你能理解我:D

謝謝你提前!

int a = 1; 
int b = 0; 

public void run() { 
    int n = readInt ("n: "); 
    for(int i = 1; i <= n; i++) { 
     println (fibonacci (n)); 
    } 
} 

private int fibonacci(int n) { 
    int c = (a) + (b); 
    a = b; 
    b = c; 
    return c; 
} 
+1

也許可以幫助:http://introcs.cs.princeton.edu/java/23recursion/Fibonacci.java.html – Philipp

+1

你實現fibonacci'的'是錯誤的。 – Maroun

+0

@Maroun:它不是通過簡單地使用斐波納契數字的定義來實現的,但我沒有看到它計算錯誤的數字。如果執行錯誤,至少必須有一個錯誤的數字。哪一個? – mm759

回答

0

您可以通過此代替循環體:

if (i == n) { 
    println (fibonacci (n)); 
} else { 
    fibonacci (n); 
} 
+0

非常感謝!這工作。 –

1

試試這個代碼。

import java.util.Scanner; 
public class Test { 
    int a = 1; 
    int b = 0; 

    public int run() { 
     @SuppressWarnings("resource") 
     Scanner s = new Scanner(System.in); 
     int n = s.nextInt(); 
     int value =0; 
     for(int i = 1; i <= n; i++) { 
      value = fibonacci (n); 
     } 
     return value; 
    } 

    private int fibonacci(int n) { 
     int c = (a) + (b); 
     a = b; 
     b = c; 
     return c; 
    } 

    public static void main (String arg[]) 
    { 
     Test t = new Test(); 
     System.out.println(t.run()); 
    } 
} 
+0

太棒了!謝謝!這工作也很好,沒有acm.libary。 –