Go入门自学宝典0011-递归函数、函数类型
递归指函数可以直接或间接的调用自身。
递归函数通常有相同的结构:一个跳出条件和一个递归体。所谓跳出条件就是根据传入的参数判断是否需要停止递归,而递归体则是函数自身所做的一些处理。
//通过循环实现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
}
阅读更多- Go入门自学宝典0012-匿名函数与闭包
- 十一、Go基础编程:递归函数、函数类型、匿名函数与闭包
- 【Go入门教程5】流程(if、goto、for、switch)和函数(多个返回值、变参、传值与传指针、defer、函数作为值/类型、Panic和Recover、main函数和init函数、import)
- Go基础编程:递归函数、函数类型、匿名函数与闭包
- python 之全局变量,可变类型,函数相关,递归函数,文件操作。
- 零基础新手的Python入门实战宝典(五) —— 最基础的表达(数据类型 · 上)
- Python入门(四)——函数概述,参数,可变参数,关键字参数,组合参数,递归函数
- 算法入门—字符串,文件,时间,类型函数积累
- TypeScript基础入门 - 类型兼容性 - 比较两个函数
- C语言学习入门 (一) 编译、链接、关键字、数据类型、printf函数
- 8.Python入门之函数类型
- go语言快速入门:数据类型使用例(4)
- 个人随手自学笔记--python3入门及基础知识点(5)—— 枚举、闭包、表达式、函数、装饰器、小爬虫
- PHP函数定义声明以及函数类型(回调函数,递归函数,重用函数。。)的介绍 变量的范围
- go语言快速入门:内建函数(6)
- GO语言函数与类型
- 【Go入门教程6】struct类型(struct的匿名字段)
- Go各种类型转换及函数的高级用法
- go语言中函数作为值、类型
- go语言笔记——是c开发的 lex yacc进行词法和语法分析,go不支持函数和运算符重载,不支持类型继承,也不支持断言,还有泛型