首页 > 编程笔记

Go语言递归函数

在函数内部,可以调用其他函数。如果一个函数在内部调用自身,那么这个函数就是递归函数。递归函数必须满足以下两个条件。

下面通过案例来理解递归函数的作用。

【示例】计算阶乘 n! = 1 × 2 × 3 × ... × n,用函数 fact(n) 表示,可以看出:fact(n) = n! = 1 × 2 × 3 × ... ×(n-1)×n = (n-1)! × n = fact(n-1) × n。所以,fact(n) 可以表示为 n × fact(n-1),只有 n=1 时需要特殊处理。如例下所示。
package main
import "fmt"
func main() {
    fmt.Println(factorial(5))
    fmt.Println(getMultiple(5))
}
//通过递归实现阶乘
func factorial(n int) int {
    if n == 0 {
        return 1
    }
    return n * factorial(n-1)
}
//通过循环实现阶乘
func getMultiple(num int) (result int) {
    result = 1
    for i := 1; i <= num; i++ {
        result *= i
    }
    return
}
运行结果如下:

120
120

递归的计算过程如下图所示。

递归函数的执行过程
图:递归的执行过程

使用递归需要注意如下事项:

优秀文章