go语言开发基础16 - 之go语言里的递归函数
函数自己调用自己,但是一定要有个结束的条件,否则递归到一定深度(每个语言的深度不一样)会因为资源问题报错。示例代码如下:
package main
import (
"fmt"
"time"
)
func recusive(n int) {
fmt.Println("in recusive ...", n)
time.Sleep(time.Second)
if n > 10 {
return
}
recusive(n + 1)
}
func main() {
recusive(0)
}
// 执行结果如下:
/*
in recusive ... 0
in recusive ... 1
in recusive ... 2
in recusive ... 3
in recusive ... 4
in recusive ... 5
in recusive ... 6
in recusive ... 7
in recusive ... 8
in recusive ... 9
in recusive ... 10
in recusive ... 11
*/
递归练习示例:
package main
import (
"fmt"
"time"
)
func factor(m int) int {
if m == 1 {
return 1
}
return factor(m-1) * m
}
func main() {
fmt.Println(factor(5)) // 结果为:120
}
/*
执行过程说明:
1.第一次自己掉自己时是:4*5=20
2.第二次自己掉自己时是:3*20=60
3.第三次自己掉自己时是:2*60=120
4.第四次自己掉自己时是:触发return,退出
*/

浙公网安备 33010602011771号