菜单
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

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(-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
自己动手试一试 »

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


×

联系销售

如果您想将 W3Schools 服务用于教育机构、团队或企业,请发送电子邮件给我们
sales@w3schools.com

报告错误

如果您想报告错误,或想提出建议,请发送电子邮件给我们
help@w3schools.com

W3Schools 经过优化,旨在方便学习和培训。示例可能经过简化,以提高阅读和学习体验。教程、参考资料和示例会不断审查,以避免错误,但我们无法保证所有内容的完全正确性。使用 W3Schools 即表示您已阅读并接受我们的使用条款Cookie 和隐私政策

版权所有 1999-2024 Refsnes Data。保留所有权利。W3Schools 由 W3.CSS 提供支持