Go 支持递归函数。这是一个经典的示例。
package main
import "fmt"
// 这个函数通过递归调用自身,直到达到阶乘的基本情况 fact(0)。
func fact(n int) int {
if n == 0 {
return 1
}
return n * fact(n-1)
}
func main() {
fmt.Println(fact(7))
// 匿名函数也可以是递归的,但这需要在定义函数之前,使用 var 关键字显式声明一个变量来存储该函数。
var fib func(n int) int
fib = func(n int) int {
if n < 2 {
return n
}
// 由于 fib 函数之前已在 main 函数中声明过,Go 语言知道在这里要调用哪个 fib 函数。
return fib(n-1) + fib(n-2)
}
fmt.Println(fib(7))
}运行结果:
$ go run recursion.go
5040
13原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。