在C++中,遞歸算法的性能可以通過以下方法進(jìn)行優(yōu)化:
int factorial(int n, int accumulator = 1) {
if (n == 0) return accumulator;
return factorial(n - 1, n * accumulator); // 尾遞歸調(diào)用
}
#include <unordered_map>
int fibonacci(int n, std::unordered_map<int, int>& memo) {
if (n <= 1) return n;
if (memo.find(n) != memo.end()) return memo[n]; // 返回已計(jì)算的值
memo[n] = fibonacci(n - 1, memo) + fibonacci(n - 2, memo); // 記憶化存儲(chǔ)
return memo[n];
}
int fibonacci(int n) {
if (n <= 1) return n;
int a = 0, b = 1, c;
for (int i = 2; i <= n; ++i) {
c = a + b;
a = b;
b = c;
}
return b;
}
std::vector<int> reverse_list(const std::vector<int>& input) {
std::vector<int> result;
for (int i = input.size() - 1; i >= 0; --i) {
result.push_back(input[i]);
}
return result;
}
請注意,優(yōu)化遞歸算法時(shí),首先要確保遞歸算法確實(shí)存在性能問題。在某些情況下,遞歸算法可能比相應(yīng)的迭代算法更簡潔、更易于理解。在進(jìn)行優(yōu)化之前,請確保遞歸算法是最佳選擇。