第9天:迭代 vs. 递归:性能分析(阶乘)
发布: (2026年1月18日 GMT+8 01:33)
1 min read
原文: Dev.to
Source: Dev.to
递归 vs. 迭代
递归通常写起来更简洁、阅读起来更容易(尤其是处理树结构时),但它会带来代价:空间复杂度。
-
迭代 使用单个栈帧;它只是在循环中更新变量。
空间: (O(1)) -
递归 使用 (N) 个栈帧。例如,计算
factorial(10000)时会在内存中压入 10,000 个帧。
空间: (O(N))
如果递归深度过大,可能会因栈溢出而崩溃,而迭代循环则可以无限继续。
C 语言实现
// Day 9: The Two Paths
#include
// Method 1: Recursive (The Elegant Way)
// Risks: Stack overflow for large numbers
unsigned long long factorial_rec(int n) {
if (n
}