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
对于一名新的开发者来说,可能需要一些时间来弄清楚这是如何工作的,最佳的方法是通过测试并修改它。