递归
栈:先进后出
函数执行完后,就会依次销毁。
总结:
- 执行一个函数时,就创建一个新的受保护的独立空间(新函数栈)
- 函数的局部变量是独立的,不会相互影响
- 递归必须向退出递归的条件逼近,否则就会无线递归,栈溢出。
- 当一个函数执行完毕,或者遇到return就会返回,遵守谁调用,就将结果返回给谁。同时函数执行完毕或return时,就会销毁自身
示例:斐波那契数
说明:
求出斐波那契数1,1,2,3,5,8,13...
给定一个整数n,求出该数对应的斐波数。
代码:
func feibo(n int) int {
if n == 1 || n == 2 {
return 1
}
fmt.Println(n)
return feibo(n-1) + feibo(n-2)
}
func main() {
//斐波那契数
fmt.Println(feibo(7))# 13
}
猴子吃桃
//猴子吃桃
//说明 第一天吃了其中一半,并多吃了一个,以后每一天都吃其中的一半,然后再多吃一个,
//到第十天时,还没吃发现只剩了一个,试问最初有多少个桃子
func digui(n int) int {
if n == 10 {
return 1
} else {
return (digui(n+1) + 1) * 2
}
}
func main() {
//斐波那契数
fmt.Println(digui(1))
}
网友评论