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循环。