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,退出  
*/

 

posted @ 2020-05-29 18:34  欧-阳  阅读(151)  评论(0)    收藏  举报