面试题答案
一键面试function fibonacci(n) {
if (n <= 1) {
return n;
}
return fibonacci(n - 1) + fibonacci(n - 2);
}
递归函数在这个场景中的优点
- 代码简洁:递归的实现方式能够非常直观地反映出斐波那契数列的数学定义,代码量少,逻辑清晰。
递归函数在这个场景中的缺点
- 效率低下:会进行大量重复计算,例如计算
fibonacci(5)
时,fibonacci(3)
会被计算两次,随着n
的增大,重复计算量呈指数级增长,导致时间复杂度为 $O(2^n)$。 - 容易栈溢出:由于递归调用会占用栈空间,当
n
较大时,递归的深度可能会超出JavaScript引擎的栈容量,导致栈溢出错误。