8.寫一個函數,輸入n,求斐波那契數列的第n項。
public class javatest {
public static long fibonacci(int n) {
// 當輸入非正整數的時候返回0
if (n <= 0) {
return 0;
}
// 輸入1或者2的時候返回1
if (n == 1 || n == 2) {
return 1;
}
// 記錄前兩個(第n-2個)的Fibonacci數的值
long prePre = 1;
// 記錄前兩個(第n-1個)的Fibonacci數的值
long pre = 1;
// 記錄前兩個(第n個)的Fibonacci數的值
long current = 2;
// 求解第n個的Fibonacci數的值
for (int i = 3; i <= n ; i++) {
// 求第i個的Fibonacci數的值
current = prePre + pre;
// 更新記錄的結果,prePre原先記錄第i-2個Fibonacci數的值
// 現在記錄第i-1個Fibonacci數的值
prePre = pre;
// 更新記錄的結果,pre原先記錄第i-1個Fibonacci數的值
// 現在記錄第i個Fibonacci數的值
pre = current;
}
// 返回所求的結果
return current;
}
public static void main(String[] args) {
System.out.println(fibonacci(0));
System.out.println(fibonacci(1));
System.out.println(fibonacci(2));
System.out.println(fibonacci(3));
System.out.println(fibonacci(4));
System.out.println(fibonacci(5));
System.out.println(fibonacci(6));
System.out.println(fibonacci(7));
}
}
輸出結果:
0
1
1
2
3
5
8
13