使用了二分法
import java.util.Scanner;
/**
* 求斐波那契数列<br/>
* <pre>
* [F(n+1) F(n)] [1 1 ]^n (n次方,可以使用归纳法证明)<br/>
* | | =| | <br/>
* [F(n) F(n-1)] [1 0 ] <br/>
* </pre>
* @author bing
*
*/
public class F {
// 关联矩阵
private static final int[][] UNIT = { { 1, 1 }, { 1, 0 } };
// 全0矩阵
private static final int[][] ZERO = { { 0, 0 }, { 0, 0 } };
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true) {
// 第n个斐波那契数,从0开始
int n = scanner.nextInt();
long t1 = System.currentTimeMillis();
int[][] m = fb(n);
long t2 = System.currentTimeMillis();
System.out.println(m[0][1]);
System.out.println("Time is: " + (t2 - t1));
}
}
/**
* 求斐波那契数列
*
* @par