Menu
×
   ❮   
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)。当条件不大于 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
自己尝试 »

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


×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.