使用Golang实现递归匿名函数的程序

使用Golang实现递归匿名函数的程序

在这篇Go语言文章中,我们将编写程序来使用缓存生成斐波那契数列,实现阶乘包括使用递归匿名函数。

递归匿名函数是不具有名称的函数,它在其自身体内调用自身,当重复调用时,它被称为递归函数。

方法1

在此示例中,我们将使用匿名函数递归地生成斐波那契数列。这里,将fibo分配给使用func和一个输入参数的匿名函数。

算法

  • 步骤1 − 创建一个“main”包,并在程序中声明“fmt”(格式化包)包,其中主要生成可执行代码,fmt 帮助格式化输入和输出。

  • 步骤2 − 创建一个主函数,在该函数中使用一个参数为n的匿名函数fibo,表示要计算的斐波那契数列的位置。

  • 步骤3 − 递归设置算法,当基本条件检查n小于等于1时返回n。

  • 步骤4 − 遵循fibo(n-1)+ fibo(n-2)的递归模式,并持续跟踪,直到满足基本条件为止。成功执行基本条件时,在堆栈中返回值并根据语句将它们添加起来。

  • 步骤5 − 最后,使用fmt包中的Println函数在控制台上生成并打印最终输出。

例子

以下是生成递归匿名函数斐波那契数列的Golang程序:

package main

import "fmt"

func main() {

   var fibo func(n int) int
   fibo = func(n int) int {
      if n <= 1 {
         return n
      }
      return fibo(n-1) + fibo(n-2)
   }    
   fmt.Println("位置6的斐波那契数:")
   fmt.Println(fibo(6)) // 输出:8
}

输出

位置6的斐波那契数:
8

方法2

在此方法中,专门使用缓存来存储Fibonacci数的先前计算,一旦接收到输出,它将存储在缓存中并返回。

算法

  • 步骤1 − 创建一个“main”包,并在程序中声明“fmt”(格式化包)包,其中主要生成可执行代码,fmt 帮助格式化输入和输出。

  • 步骤2 − 创建一个闭包,返回函数,带有输入n,表示n个Fibonacci数。

  • 步骤3 − 在函数中创建缓存,使用内置make函数存储Fibonacci数的先前计算。

  • 步骤4 − 内部的fib函数是递归匿名函数,将递归执行,直到满足基本条件。

  • 步骤5 − 它计算后的输出存储在缓存中,并返回到函数中。

  • 步骤6 − 使用fmt包中的Println函数打印输出,其中ln表示新行。

例子

以下是使用缓存实现递归匿名函数的Golang程序:

package main

import "fmt"

func main() {

   fibo := func() func(int) int {
      cache := make(map[int]int)

      var fib func(int) int
      fib = func(n int) int {
         if n <= 1 {
            return n
         }
         if val, ok := cache[n]; ok {
            return val
         }
         cache[n] = fib(n-1) + fib(n-2)
         return cache[n]
      }
      return fib
   }()
   fmt.Println("The fibonacci number at the location 6th is:")
   fmt.Println(fibo(6))
}

输出:

The fibonacci number at the location 6th is:
8

方法 3

在这个方法中,我们将编写一个 Go 语言程序,通过计算一个数字的阶乘来实现递归匿名函数。

算法

  • 步骤 1 − 创建一个 package main,并在程序中声明 fmt(格式化包)的 package,其中 main 生成可执行代码,fmt 用于格式化输入和输出。

  • 步骤 2 − 在其中创建一个 main 函数,在该函数中定义一种 int 类型的阶乘为匿名函数。

  • 步骤 3 − 在该函数中运行匿名函数时,检查输入中的值是否等于 0,如果是,则返回 1。

  • 步骤 4 − 如果值不为零,则递归运行该函数以找到数字的阶乘。

  • 步骤 5 − 然后,使用要计算阶乘的输入参数调用该函数。

  • 步骤 6 − 使用 fmt 包的 Println 函数在控制台上打印阶乘,其中 ln 是一个换行符。

示例

以下为实现递归匿名函数的 Golang 程序的示例,使用阶乘:

package main

import "fmt"

func main() {   
   var factorial func(int) int
   factorial = func(val int) int {
      if val == 0 {
         return 1
      }
      return val * factorial(val-1)
   }    
   output := factorial(6)
   fmt.Println("给定数字的阶乘是:")
   fmt.Println(output)
}

输出

给定数字的阶乘是:
720

结论

我们编译并执行了实现递归匿名函数的程序。在第一个示例中,使用匿名函数计算第 n 个斐波那契数,在第二个示例中,使用缓存和匿名函数,以递归方式计算数字的阶乘。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程