Golang 使用递归方法寻找最大公约数

Golang 使用递归方法寻找最大公约数

在本教程中,我们将讨论如何编写一个Golang程序,使用递归方法寻找最大公约数GCD。

两个或多个数的最大公约数(GCD)是能够整除这些数的最大公因数。也被称为最高公因数(HCF)。例如,15和10的最大公因数是5,因为这两个数都可以被5整除。

15/5 = 3
10/5 = 2

步骤

  • 步骤1 - 导入fmt包

  • 步骤2 - 开始main()函数

  • 步骤3 - 我们将使用if条件语句

  • 步骤4 - 递归调用函数本身

  • 步骤5 - 开始main()函数

  • 步骤6 - 调用factorialnumber()函数

  • 步骤7 - 使用fmt.Println()在屏幕上打印结果

示例1

// GOLANG PROGRAM TO FIND GCD USING RECURSION
package main

// fmt package provides the function to print anything
import "fmt"

// function prototype
func main() {

   // declare the variables
   var n1 int
   var n2 int
   fmt.Println("Golang Program to find GCD using recursion")

   // initialize the variables
   n1 = 36
   n2 = 60

   // print the result using in-built function fmt.Println()
   fmt.Println("G.C.D OF", n1, n2,"is",hcf(n1,n2))
}
// create the function hcf()
func hcf(n1 int, n2 int) int {
   if (n2 != 0) {
      return hcf(n2, n1 % n2);
   } else {
      return n1;
   }
}

输出

Golang Program to find GCD using recursion
G.C.D OF 36 60 is 12

代码描述

  • 在上面的程序中,我们首先声明了包main。

  • 我们导入了fmt包,其中包含了fmt包的文件。

  • 现在开始main()函数。GO程序的执行从主函数main()开始。

  • 接下来我们声明并初始化了整数变量n1和n2。

  • 现在创建函数hcf()。

  • 我们将使用if-else条件语句来执行代码。

  • 在代码行 return hcf(n2, n1 % n2) 中,函数调用了自己,即递归调用。

  • 最后使用内置函数fmt.Println()将结果打印到屏幕上。此函数在fmt包中定义,用于写入标准输出。

步骤

  • 第1步 − 导入fmt包。

  • 第2步 − 开始main()函数。

  • 第3步 − 声明并初始化变量。

  • 第4步 − 创建gcd()函数。

  • 第5步 − 使用if else条件语句。

  • 第6步 − 递归调用函数本身。

  • 第7步 − 使用fmt.Printf()打印结果。

示例2

// GOLANG PROGRAM TO FIND GCD USING RECURSION
package main

// fmt package provides the function to print anything
import "fmt"
func main() {

   // declare the variables
   var a int
   var b int
   var result int
   fmt.Println("Golang Program to find GCD using recursion")

   // initialize the variables
   a = 300
   b = 60
   result = gcd(a,b)

   // print the result using in-built function fmt.Printf()
   fmt.Printf("The GCD of %d and %d is %d.\n",a,b,result)
}
// create the function gcd()
func gcd(a int,b int) int {
   for a != b {
      if b < a {
         return gcd(a - b,b)
      } else {
         return gcd(a,b - a)
      }
   }
   return a
}

输出

Golang Program to find GCD using recursion
The GCD of 300 and 60 is 60.

代码说明

  • 在上述程序中,我们首先声明了主要的包

  • 我们导入了包含fmt包文件的fmt包

  • 现在开始main()函数。GO程序的执行从main()函数开始

  • 接下来,我们声明并初始化整数变量a、b和result

  • 变量’a’和’b’对应于要找到最大公约数的整数。变量result对应于计算最大公约数后的最终结果。

  • 现在创建gcd()函数

  • 我们将使用for循环和if-else条件语句来执行代码。for循环用于检查’a’和’b’变量的值是否相等。如果这个条件为真,则执行循环。如果条件为假,则返回’a’的值。if-else条件语句用于检查’a’变量的值是否大于’b’变量的值。如果条件为真,则返回两个整数变量的值。否则,如果条件为假,则执行else语句并返回两个整数变量的值。

  • 在代码行中:return gcd(a – b,b):return gcd(a,b – a):这里函数调用了自身,即递归调用

  • 最后使用内置函数fmt.Printf()在屏幕上打印结果。这个函数在fmt包下定义,它帮助写入标准输出。

结论

在上述两个示例中,我们成功编译并执行了使用递归技术找到最大公约数(GCD)的Golang程序代码。

我们使用fmt.Println()和fmt.Printf()函数在输出屏幕上打印结果。这里我们展示了如何在Go语言中实现条件语句。我们在一个示例中使用了if条件,第二个示例中使用了for循环。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程