Golang 使用递归查找两个数字的乘积

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

描述

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

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

  • 接下来,我们创建一个函数product(),使用递归技术来找到两个数字的乘积。

  • 我们将使用if-else条件语句,如果指定的条件为真,则执行一个代码块,如果条件为假,则执行另一个代码块。

  • 如果n小于m,则函数将返回product(m, n)并结束递归函数。

  • 如果m不等于0,则函数将递归调用自身,并返回(n + product(n, m-1))。

  • 现在开始函数main()。

  • 接下来初始化整数变量a和b,它们对应于要找到其乘积的两个数字。整数c对应于最终结果。

  • 现在调用product()函数

  • 使用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

代码描述

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

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

  • 接下来,我们创建了一个函数product_1(),使用递归技术找到两个数字的乘积。

  • 我们将使用if-else条件语句,如果指定的条件为真,则执行一个代码块,如果条件为假,则执行另一个代码块。

  • 如果n小于m,则函数将返回乘积(m,n)并结束递归函数。

  • 如果m不等于0,则函数会间接地递归调用第二个函数product_2()并返回(n + product(n,m-1))。

  • 接下来,我们创建一个函数product_2(),并类似于上面的函数,对函数product_1()进行递归调用,并返回(n + product_1(n,m-1))。

  • 现在开始执行主函数main()。

  • 接下来,初始化整数变量x和y,它们对应于需要找到其乘积的两个数字。整数z对应于最终结果。

  • 现在调用第一个函数product_1()。

  • 最后,使用fmt.Printf()在屏幕上打印结果。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程