目录
前言
递归函数就是在调用过程中调用自己。
语法格式:
func recursion() {
recursion() //函数调用自身
}
func main() {
recursion()
}
Go 支持递归。但在使用递归时,开发者需要设置退出条件,否则递归将陷入无限循环中。
递归函数对于解决数学上的问题是非常有用的,就像计算阶乘,生成斐波那契数列等。
1、阶乘
示例:
package main
import "fmt"
//递归算法
func main() {
a := 5
fmt.Printf("%d的阶乘是:%d", a, oper(uint64(a)))
}
func oper(n uint64) (result uint64) {
if n > 0 {
//自己调用自己
result = n * oper(n-1)
return result
}
//退出条件
return 1
}
//运行结果为:
5的阶乘是:120
2、斐波那契数列
示例:递归函数实现斐波那契数列。
package main
import "fmt"
//斐波那契数列:前面两数相加等于后面数的值
func main() {
for i := 0; i < 10; i++ {
fmt.Println("前十位斐波那契数值是:", oper(i))
}
}
func oper(a int) int {
if a < 2 {
//头两位数值本身,因为斐波那契数列的排列前两位不参与。
return a
}
//前两数和
return oper(a-2) + oper(a-1)
}
//运行结果为:
前十位斐波那契数值是: 0
前十位斐波那契数值是: 1
前十位斐波那契数值是: 1
前十位斐波那契数值是: 2
前十位斐波那契数值是: 3
前十位斐波那契数值是: 5
前十位斐波那契数值是: 8
前十位斐波那契数值是: 13
前十位斐波那契数值是: 21
前十位斐波那契数值是: 34