Go 递归函数

递归函数

Go 支持递归函数。如果函数调用自身并且能达到一个停止条件,那么这个函数就是递归的。

在下面的例子中,testcount() 是一个调用自身的函数。我们使用 x 变量作为数据,每次递归时都会增加 1x + 1)。当 x 变量等于 11x == 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

亲自试一试

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