递归是一个函数隐式或显式调用自身,对应的函数称为递归函数。 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!