我知道,如果我不使用动态编程,根据递归关系的主方法,复杂度将是 O(2 ^ n)。
T(n) = T(n-1) + T(n-2)
. 但是如果我使用动态编程,那么它仍然是 O( 2 ^ n) 吗?
int [ ] fib = new fib [ 32 ] ;
int fibonacci ( int n) {
if ( n == 1 ) return 1 ;
if ( n == 2 ) return 1 ;
// already calculated fibonacci (n)
if ( fib [ n ] != 0) return fib [ n ] ;
return fib [ n ] = fibonacci ( n−1 ) + fibonacci ( n − 2 ) ;
}