您的位置:首页 > 编程语言 > Go语言

Go入门自学宝典0011-递归函数、函数类型

2018-11-27 10:34 274 查看

递归指函数可以直接或间接的调用自身。

递归函数通常有相同的结构:一个跳出条件和一个递归体。所谓跳出条件就是根据传入的参数判断是否需要停止递归,而递归体则是函数自身所做的一些处理。

//通过循环实现1+2+3……+100
func Test01() int {
i := 1
sum := 0
for i = 1; i <= 100; i++ {
sum += i
}

return sum

}

//通过递归实现1+2+3……+100
func Test02(num int) int {
if num == 1 {
return 1
}

return num + Test02(num-1) //函数调用本身

}

//通过递归实现1+2+3……+100
func Test03(num int) int {
if num == 100 {
return 100
}

return num + Test03(num+1) //函数调用本身

}

func main() {

fmt.Println(Test01())    //5050
fmt.Println(Test02(100)) //5050
fmt.Println(Test03(1))   //5050

}

0011.4 函数类型
在Go语言中,函数也是一种数据类型,我们可以通过type来定义它,它的类型就是所有拥有相同的参数,相同的返回值的一种类型。

type FuncType func(int, int) int //声明一个函数类型, func后面没有函数名

//函数中有一个参数类型为函数类型:f FuncType
func Calc(a, b int, f FuncType) (result int) {
result = f(a, b) //通过调用f()实现任务
return
}

func Add(a, b int) int {
return a + b
}

func Minus(a, b int) int {
return a - b
}

func main() {
//函数调用,第三个参数为函数名字,此函数的参数,返回值必须和FuncType类型一致
result := Calc(1, 1, Add)
fmt.Println(result) //2

var f FuncType = Minus
fmt.Println("result = ", f(10, 2)) //result =  8

}

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐