📜  Golang 中的递归匿名函数

📅  最后修改于: 2021-10-25 02:59:30             🧑  作者: Mango

递归是一个函数隐式或显式调用自身,对应的函数称为递归函数。 Go 语言支持称为匿名函数的特殊功能。它是一个不包含任何名称的函数。它用于创建内联函数。递归函数也可以声明和定义为匿名函数。递归匿名函数也称为递归函数字面量

句法:

func(parameter-list)(return-type){
// code..
// call same function
// within the function
// for recursion
// Use return statement only
// if return-type are given.
return
}()

例子:

// Golang program to show
// how to create an recursive
// Anonymous function
package main
  
import "fmt"
  
func main() {
  
    // Anonymous function
    var recursiveAnonymous func()
    recursiveAnonymous = func() {
      
        // Printing message to show the
        // function call and iteration.
        fmt.Println("Anonymous functions could be recursive.")
          
        // Calling same function 
        // recursively
        recursiveAnonymous()
  
    }
      
    // Main calling of
    // the function
    recursiveAnonymous()
  
}

输出:

Anonymous functions could be recursive.
Anonymous functions could be recursive.
Anonymous functions could be recursive.
Anonymous functions could be recursive.
.
.
.
.
Infinite times function calls.

示例 2:

// Golang program to show
// how to create an recursive
// Anonymous function
package main
  
import (
    "fmt"
)
  
func main() {
  
    // Anonymous function
    var recursiveAnonymous func(int)
      
    // Passing arguments
    // to Anonymous function
    recursiveAnonymous = func(variable int) {
      
        // Checking condition
        // to return
        if variable == -1 {
          
            fmt.Println("Welcome to Geeks for Geeks!")
            return
        } else {
          
            fmt.Println(variable)
              
            // Calling same
            // function recursively
            recursiveAnonymous(variable - 1)
        }
    }
      
    // Main calling
    // of the function
    recursiveAnonymous(10)
}

输出:

10
9
8
7
6
5
4
3
2
1
0
Welcome to Geeks for Geeks!