Golang程序 使用递归查找两个数字的乘积
两个数字的乘积是你将它们相乘后得到的结果。所以15是3和5的乘积,22是2和11的乘积,以此类推。
递归是指一个函数通过直接或间接方式调用自己。 每个递归函数都有一个基本情况或基本条件,它是递归中最后的可执行语句,并停止进一步调用。
例子-1: Golang程序代码,通过直接递归方法,用递归方法寻找两个数字的乘积
语法
Syntax for direct recursion
func recursion() {
recursion()
}
func main() {
recursion();
}
算法
-
第1步 – 导入软件包 fmt。
-
第2步 – 创建函数product()。
-
第3步 – 我们将使用一个if…else条件语句。
-
第4步 – 启动函数main()。
-
第5步 – 初始化整数变量。
-
第6步 – 调用函数product()。
-
第7步 – 使用fmt.Printf()在屏幕上打印结果。
例子
package main
// fmt package provides the function to print anything
import "fmt"
func product(n int, m int) int {
// if n less than m
if n < m {
return product(m, n)
} else {
// if m is not equal to 0
if (m != 0) {
// recursive call to itself
return (n + product(n, m-1))
} else {
return 0
}
}
}
// Start the function main()
func main() {
// Declare and initialize integer variables
var a int
var b int
var c int
a = 4
b = 15
fmt.Println("The N1=",a,"\nThe N2 =",b)
c = product(a, b)
fmt.Printf("The product of two numbers: %d\n", c)
}
输出
The N1= 4
The N2 = 15
The product of two numbers: 60
说明
-
在上面的程序中,我们首先声明包main。
-
我们导入了fmt包,其中包括包fmt的文件。
-
接下来我们创建了一个函数product(),使用递归技术找到两个数字的乘积。
-
我们将使用if-else条件语句,它允许你在指定条件为真时执行一个代码块,在条件为假时执行另一个代码块。
-
如果n小于m,该函数将返回乘积(m,n)并结束递归函数。
-
而如果m不等于0,那么该函数将递归调用函数本身并返回(n+product(n, m-1))。
-
现在启动函数main()。
-
接下来初始化整数变量a和b,这两个变量对应于需要找到其积的两个数字。一个整数c对应于最终结果。
-
现在调用乘积()函数
-
并使用fmt.Printf()在屏幕上打印结果。
例2:使用间接递归法查找两个数字的乘积
语法
Syntax for indirect recursion
func recursion_1() {
recursion_2()}
func recursion_2(){
recursion_1()}
func main() {
recursion_1();
}
算法
-
第1步 – 导入软件包 fmt。
-
第2步 – 创建函数 product_1()。
-
第3步 – 我们将使用if…else条件语句。
-
第4步 – 创建函数 product_2()。
-
第5步 – 递归地间接调用函数 product_1()。
-
第5步 – 启动函数main()。
-
第6步 – 初始化整数变量x、y和z。
-
第7步 – 调用函数product_1()。
-
第8步 – 使用fmt.Printf()在屏幕上打印结果。
例子
package main
// fmt package provides the function to print anything
import "fmt"
// defining the function with a parameter of int
// type and have a return type int
func product_1(n int, m int) int {
// this is the base condition
// if n less than m
if n < m {
return product_2(m, n)
} else {
// if m is not equal to 0
if (m != 0) {
// recursive call to the second function product_2()
return (n + product_2(n, m-1))
} else {
return 0
}
}
}
func product_2(n int, m int) int {
// if n less than m
if n < m {
return product_1(m, n)
} else {
// if m is not equal to 0
if (m != 0) {
// recursive call to the first function product_1()
return (n + product_1(n, m-1))
} else {
return 0
}
}
}
func main() {
// Declare and initialize integer variable
var x int
var y int
var z int
x = 11
y = 15
fmt.Println("The N1=",x,"\nThe N2 =",y)
z = product_1(x, y)
fmt.Printf("The product of two numbers: %d\n", z)
}
输出
The N1= 11
The N2 = 15
The product of two numbers: 165
代码描述
-
在上面的程序中,我们首先声明包main。
-
我们导入了fmt包,其中包括包fmt的文件。
-
接下来我们创建了一个函数profit_1(),使用递归技术找到两个数字的乘积。
-
我们将使用if-else条件语句,它允许你在指定条件为真时执行一个代码块,在条件为假时执行另一个代码块。
-
如果n小于m,该函数将返回乘积(m,n)并结束递归函数。
-
而如果m不等于0,那么该函数将间接递归调用第二个函数profit_2(),并返回(n+profit(n, m-1))。
-
接下来,我们创建一个函数profit_2(),并与上述函数类似,递归调用函数profit_1()并返回(n + product_1(n, m-1))。
-
现在启动函数main()。
-
接下来初始化整数变量x和y,这两个变量对应于需要找到其乘积的两个数字。整数z对应于最终结果。
-
现在调用第一个函数product_1()。
-
最后用fmt.Printf()在屏幕上打印结果。
极客教程