Go 递归

递归,就是在运行的过程中调用自己。

通过以下阶乘函数来看下递归的写法:

1
2
3
4
5
6
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

递归函数通过不断的调用自身完成需求,需要注意的是需要设置退出条件,否则就死循环了。

递归函数可以非常方便的解决数学上的问题,如阶乘,斐波那契数列等。