通过理解问题的规模和时间复杂度来设计一种递归算法,以便得出正确的结果并且在合理时间内完成计算。
示例代码:
#include
int fib(int n) { if (n <= 1) return n; return fib(n-1) + fib(n-2); }
int main() { int n = 10; cout << "Fibonacci("<< n <<") = " << fib(n) << endl; return 0; }
上述代码是一个递归算法,用于计算斐波那契数列的第n个数。时间复杂度为O(2^n),随着n增大很快就超时。为了减少时间复杂度,可以使用循环代替递归,或者记忆化搜索法缓存之前计算的结果。
上一篇:BigO是否有正确的表示方法?
下一篇:比构造函数注入更好的策略吗?