递归,就是在运行的过程中调用自己。
通过以下阶乘函数来看下递归的写法:
func factorial(x uint) uint {
if x == 0 {
return 1
}
return x * factorial(x-1)
}
factorial 函数调用自己,形成函数递归,为了更好地理解这个函数是如何工作的,可以通过 factorial(2) 来理解。
x == 0 ? 不等于, x = 2
计算 x - 1 的阶乘
x == 0 ? 不等于, x = 1
计算 x - 1 的阶乘
- x == 0 ? 等于, 返回 1
返回 1 * 1
返回 2 * 1
递归函数通过不断的调用自身完成需求,需要注意的是需要设置退出条件,否则就死循环了。
递归函数可以非常方便的解决数学上的问题,如阶乘,斐波那契数列等。