基本介绍
一个函数在函数体内又调用了本身,称为递归调用
package main
import "fmt"
func test(n int) {
if n > 2 {
n--
test(n)
}
fmt.Println("n=", n)
}
func main(){
test(4)
}
/*
n= 2
n= 2
n= 3
*/
递归函数需要遵守的原则
- 1.执行一个函数的时候,就创建一个新的受保护的独立空间(新函数栈)
- 2.函数的局部变量是独立的,不会互相影响
- 3.递归必须向退出递归的条件逼近,否则就是无限递归
- 4.当一个函数执行完毕,或者遇到return,就会返回,遵守谁调用,就将结果返回给谁,同时当函数执行完毕或者返回时,该函数本身也会被系统销毁
练习
斐波拉契数列
package main
import "fmt"
func fbn (n int) int {
if ( n == 1 || n == 2) {
return 1
} else {
return fbn(n -1) + fbn(n -2)
}
}
func main(){
res := fbn(6)
fmt.Println("res=", res)
}
/*
res=8
*/