Go 递归函数
递归函数
Go 支持递归函数。如果函数调用自身并且能达到一个停止条件,那么这个函数就是递归的。
在下面的例子中,testcount() 是一个调用自身的函数。我们使用 x 变量作为数据,每次递归时都会增加 1(x + 1)。当 x 变量等于 11(x == 11)时,递归结束。
实例
package main
import ("fmt")
func testcount(x int) int {
if x == 11 {
return 0
}
fmt.Println(x)
return testcount(x + 1)
}
func main(){
testcount(1)
}
结果:
1 2 3 4 5 6 7 8 9 10
递归是一个常见的数学和编程概念。它的好处在于你可以通过遍历数据来获得结果。
开发人员应该小心使用递归函数,因为很容易编写一个永远不会终止的函数,或者使用过量内存或处理器能力的函数。然而,如果正确编写,递归可以是一种非常高效且数学上优雅的编程方法。
在下例中,factorial_recursion() 是一个调用自身的函数。我们使用 x 变量作为数据,每次递归时它都会递减 (-1)。当条件不大于 0(即等于 0)时,递归结束。
实例
package main
import ("fmt")
func factorial_recursion(x float64) (y float64) {
if x > 0 {
y = x * factorial_recursion(x-1)
} else {
y = 1
}
return
}
func main() {
fmt.Println(factorial_recursion(4))
}
结果:
24
对于一名新的开发者来说,可能需要一些时间来弄清楚这是如何工作的,最佳的方法是通过测试并修改它。