
输出Fibonacci的第n项,要求时间复杂度要低
1 2 3 4 5 6 7
|
public int fibonacci(int n) { if(n<0) return 0; if(n<=2) return 1; else{ return fibonacci(n-1)+fibonacci(n-2); }
|
但是这种递归方法的时间复杂度太高
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
public int fibonacci_01(int n) { if(n<0) return 0; else if((n<=2) return 1; else { int a = 1,b = 1,c = 0; for(int i = 0;i<=n;i++) { c = a + b; a = b; b = c; } return c; } }
|
这样改变之后时间复杂度就变成了O(n)了。
近期评论