欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
全部教程·
Go语言·
Go教程
[目录]
·
Golang 递归函数
Golang 教程
Golang 安装教程
Golang 开发环境安装 Golang 开发工具安装Golang 快速入门
Golang 程序结构 Golang 基础语法 Golang 数据类型 Golang 变量 Golang 常量 Golang 运算符Golang 流程控制
Golang 条件语句 Golang 循环语句Golang 基础编程
Golang 函数 Golang 变量作用域 Golang 数组(array) Golang 指针(pointer) Golang 结构体(struct) Golang 切片(slice) Golang 范围(range) Golang 集合(map) Golang 接口(interface)Golang 高级编程
Golang 类型转换 Golang 递归函数 Golang 错误处理 Golang 并发编程Golang 保留字
Golang for循环 Golang 循环嵌套 Golang break语句 Golang continue语句 Golang goto语句 Golang if语句 Golang if...else语句 Golang if语句嵌套 Golang switch语句 Golang select语句 Golang fallthrough语句 Golang 常量iota Golang 单元测试 Golang 日志框架
Golang 教程
Golang 安装教程
Golang 开发环境安装 Golang 开发工具安装Golang 快速入门
Golang 程序结构 Golang 基础语法 Golang 数据类型 Golang 变量 Golang 常量 Golang 运算符Golang 流程控制
Golang 条件语句 Golang 循环语句Golang 基础编程
Golang 函数 Golang 变量作用域 Golang 数组(array) Golang 指针(pointer) Golang 结构体(struct) Golang 切片(slice) Golang 范围(range) Golang 集合(map) Golang 接口(interface)Golang 高级编程
Golang 类型转换 Golang 递归函数 Golang 错误处理 Golang 并发编程Golang 保留字
Golang for循环 Golang 循环嵌套 Golang break语句 Golang continue语句 Golang goto语句 Golang if语句 Golang if...else语句 Golang if语句嵌套 Golang switch语句 Golang select语句 Golang fallthrough语句 Golang 常量iota Golang 单元测试 Golang 日志框架Go语言 递归函数
函数直接或间接调用函数本身,则该函数称为递归函数。Go 语言支持递归函数。
递归函数的作用与循环执行方法的效果一样,它本质上也是一个方法的循环调用。
1. 递归函数的语法
func recursion() {
recursion() /* 函数调用自身 */
}
func main() {
recursion()
}
注意:我们在使用递归时需要设置退出条件,否则递归将陷入无限循环中。在以上的范例中,由于没有设置退出条件,所以将进入死循环。
2. 递归函数的范例
递归函数对于解决数学上的问题是非常有用的,就像计算阶乘、生成斐波那契数列等。
1)阶乘
以下范例通过 Go 语言的递归函数实现阶乘:
package main
import "fmt"
func Factorial(n uint64)(result uint64) {
if (n > 0) {
result = n * Factorial(n-1)
return result
}
return 1
}
func main() {
var i int = 15
fmt.Printf("%d 的阶乘是 %d\n", i, Factorial(uint64(i)))
}
以上范例执行输出结果为:
15 的阶乘是 1307674368000
2)斐波那契数列
以下范例通过 Go 语言的递归函数实现斐波那契数列:
package main
import "fmt"
func fibonacci(n int) int {
if n < 2 {
return n
}
return fibonacci(n-2) + fibonacci(n-1)
}
func main() {
var i int
for i = 0; i < 10; i++ {
fmt.Printf("%d\t", fibonacci(i))
}
}
以上范例执行输出结果为:
0 1 1 2 3 5 8 13 21 34
下一章:Golang 错误处理
Go语言 错误处理:错误处理在每个语言中都是一项重要内容。Go语言通过内置的错误接口 error 提供了非常简单的错误处理机制。我们可以在编码中通过实现 error 接口类型来生成错误信息。函数通常在最后的返回值中返回错误信息。
AI 中文社