Golang 如何使用递归找到给定两个数字的最小公倍数
在本教程中,我们将使用递归来找到Golang中两个数字的最小公倍数。为了递归地找到最小公倍数,我们将使用最大公约数(GCD)与最小公倍数(LCM)的关系。LCM代表最小公倍数,是两个数字的可被整除的最小数。
例如,
假设两个数字分别为10和4。能够同时整除这两个数字的最小数是20。
使用LCM和GCD之间的关系来找到LCM
在这个示例中,我们将使用两个数字的LCM和GCD之间的关系来找到LCM。
解释
The relationship between LCM and GCD is
LCM = (number1 * number2) / GCD
number1 = 20
Number2 = 15
GCD = 5
LCM = ( 20 * 15 ) / 5
= 300 / 5
= 60
步骤
- 步骤1 - var number1, number2, gcd, minNumber int – 在这行代码中,我们声明了两个变量来存储我们找到的最小公倍数的数字,一个变量来存储两个数字的最大公约数,以及一个变量来存储这两个数字中的较小值。
-
步骤2 - number1 = 20 number2 = 15 – 将两个数字初始化为你想要找到最小公倍数的值。
-
步骤3 - if number1 < number2 { } – 找出两个数字中的最小值,并将其存储在minNumber变量中。
-
步骤4 - gcdOfTwoNumbers(number1, number2, minNumber) – 调用递归函数来找出两个数字的最大公约数。
-
步骤5 - LCM:= (number1 * number2) / gcd – 使用最大公约数和最小公倍数的关系来找到最小公倍数。
示例
package main
// fmt package provides the function to print anything
import (
"fmt"
)
// this function is finding the GCD of two numbers with three parameters
// of int type and have a return type of int type
func gcdOfTwoNumbers(number1, number2, minNumber int) int {
// checking if the number minNumber can divide both number1 and number2
if minNumber == 1 || (number1%minNumber == 0 && number2%minNumber == 0) {
return minNumber
}
// returning the GCD
return gcdOfTwoNumbers(number1, number2, minNumber-1)
}
func main() {
// declaring the variable to store the value of two numbers
// and a variable to store an answer
var number1, number2, gcd, minNumber int
// initializing both the variables
number1 = 20
number2 = 15
fmt.Println("Program to find the LCM of two numbers using the relation with GCD using recursion.")
if number1 < number2 {
minNumber = number1
} else {
minNumber = number2
}
// calling a function to find the GCD of two number
// and passing a minimum of number1 and number2
gcd = gcdOfTwoNumbers(number1, number2, minNumber)
LCM := (number1 * number2) / gcd
// printing the result
fmt.Println("The LCM of", number1, "and", number2, "is", LCM)
}
输出
Program to find the LCM of two numbers using the relation with GCD using recursion.
The LCM of 20 and 15 is 60
描述
在这种方法中,我们首先找到最小的数,然后通过递归地找到两个数的最大公约数,在应用最大公约数和最小公倍数的关系进行计算,从而找到最小公倍数。
结论
这是使用与Golang中最大公约数相关的关系来找到两个数的最小公倍数的递归方法。这是一种高效的找到最小公倍数的方法。要了解更多关于go的知识,可以参考这些教程。