面试题答案
一键面试package main
import "fmt"
func factorial(n int) int {
if n == 0 || n == 1 {
return 1
}
return n * factorial(n - 1)
}
- 递归函数调用机制:
- 当调用
factorial(n)
时,如果n
既不是0也不是1,函数会调用自身factorial(n - 1)
。 - 例如,计算
factorial(5)
,它会计算5 * factorial(4)
,然后factorial(4)
又会计算4 * factorial(3)
,依此类推,直到factorial(1)
。 - 每一次递归调用都会在栈上创建一个新的函数调用帧,包含当前函数的参数和局部变量等信息。
- 当调用
- 终止条件:
- 当
n
等于0或者1时,函数返回1。这是递归的终止条件,防止函数无限递归调用,导致栈溢出错误。例如当n
最终减到1时,factorial(1)
返回1,这样factorial(2)
就能计算出2 * 1
,进而factorial(3)
能计算出3 * 2 * 1
等,直到计算出factorial(n)
的结果。
- 当