Go语言递归函数的用法
一个函数中可以调用另一个函数,如果在函数中调用函数本身,就成了递归函数。
递归函数是通过不断调用自身代码,当达到特定条件时才终止调用过程,它的语法格式如下:
递归函数用于斐波那契数列、阶乘、归并排序和排列组合等数学思维较强的业务场景。以斐波那契数列为例,斐波那契数列是指这样一个数列:{1,1,2,3,5,8,13,21,…},它的首项为 1,第 2 项也为 1,且从第 3 项起,每一项都等于它前两项之和,实现代码如下:
运行上述代码,运行结果为:
递归函数是通过不断调用自身代码,当达到特定条件时才终止调用过程,它的语法格式如下:
func myfunc() { // 函数调用自身 myfunc() } func main() { myfunc() }
递归函数用于斐波那契数列、阶乘、归并排序和排列组合等数学思维较强的业务场景。以斐波那契数列为例,斐波那契数列是指这样一个数列:{1,1,2,3,5,8,13,21,…},它的首项为 1,第 2 项也为 1,且从第 3 项起,每一项都等于它前两项之和,实现代码如下:
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 // 调用函数fibonacci() for i = 0; i < 10; i++ { fmt.Printf("%d ", fibonacci(i)) } }上述代码定义了函数 fibonacci() 并设置了函数参数 n,函数递归思路如下:
- 当参数 n 小于 2 的时候,直接将参数值作为函数返回值。
- 当参数 n 的值大于或等于 2 的时候,函数 fibonacci() 执行递归操作,分别设置 n-2 和 n-1 作为函数参数。
- 程序每次执行递归的时候,参数 n 都会小于上一次递归的参数值,直到参数 n 小于 2 的时候终止递归操作。
运行上述代码,运行结果为:
0 1 1 2 3 5 8 13 21 34