面试题答案
一键面试使用JavaScript递归函数实现斐波那契数列
function fibonacci(n) {
if (n === 0) {
return 0;
} else if (n === 1) {
return 1;
} else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
递归实现可能存在的性能问题及原因
- 性能问题:递归实现斐波那契数列在计算较大的
n
值时,性能会急剧下降,计算时间会变得非常长,甚至导致栈溢出错误。 - 原因:
- 重复计算:在递归过程中,会有大量的重复计算。例如计算
fibonacci(5)
时,fibonacci(3)
会被计算两次,fibonacci(2)
会被计算多次。随着n
的增大,重复计算的数量呈指数级增长。 - 栈空间消耗:每次函数调用都会在栈中分配空间,递归调用层次过深会导致栈空间被耗尽,从而引发栈溢出错误。
- 重复计算:在递归过程中,会有大量的重复计算。例如计算