Golang程序 使用递归查找N个数字之和

Golang程序 使用递归查找N个数字之和

在本教程中,我们将学习如何在Golang编程语言中使用递归来寻找N个数字的和。

递归是指一个函数通过直接或间接方式调用自己。每个递归函数都有一个基本情况或基本条件,它是递归中最后的可执行语句,并停止进一步调用。

下面是两个例子,显示了两种不同类型的递归:直接和间接。

用直接递归法求N个数字之和

语法

Syntax for direct recursion
func recursion() {
   recursion()
}
func main() {
   recursion();
}

算法

  • 第1步– 导入软件包fmt

  • 第2步 – 创建函数sum()

  • 第3步 – 我们将使用if…else条件语句

  • 第4步 – 启动函数main()

  • 第5步– 初始化整数变量

  • 第6步 – 调用函数sum()

  • 第7步 – 使用fmt.Printf()在屏幕上打印结果。

例子

Golang程序代码通过使用直接递归法,用递归法求N个数字的和。

// GOLANG PROGRAM TO FIND THE SUM OF
// N NUMBERS USING RECURSION
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 sum(n int) int {

   // this is the base condition
   // if n is equal to 0
   if n == 0 {

   // function will return 0 and end the recursive function
   return 0
   } else {
      // recursive call to itself
      return n + sum(n - 1)
   }
}

// start the main() function
func main() {

   // Declare and initialize integer variable
   number := 25
   fmt.Println("Sum of first n numbers using recursion in Golang Program")
   fmt.Printf("Sum of the first %d numbers is %d", number, sum(number))
   // Prints the final result
}

输出

Sum of first n numbers using recursion in Golang Program
Sum of the first 25 numbers is 325

代码的描述

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

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

  • 接下来,我们创建了一个函数sum(),使用递归技术找到n个数字的总和。

  • 我们将使用if…else条件语句,它允许你在指定条件为真时执行一个代码块,在条件为假时执行另一个代码块。

  • 如果n等于0,函数将返回0并结束递归函数

  • 否则函数将递归调用函数本身并返回(n + sum(n-1))。

  • 现在启动函数main()

  • 接下来初始化整数变量number

  • 现在调用sum()函数

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

用间接递归法求N个数之和

语法

func recursion_1() {
   recursion_2()}
func recursion_2(){
   recursion_1()}
func main() {
   recursion_1();
}

算法

  • 第1步– 导入软件包fmt

  • 第2步 – 创建函数sum()

  • 第3步 – 我们将使用if…else条件语句

  • 第4步 – 创建函数sumofn()

  • 第5步–间接递归调用函数sum()

  • 第6步 – 启动函数main()

  • 第7步– 初始化整数变量number

  • 第8步 – 调用函数sum()

  • 第9步 – 使用fmt.Printf()在屏幕上打印结果

例子

使用间接递归法,用递归法寻找N个数字的总和的Golang程序代码。

// GOLANG PROGRAM TO FIND THE SUM OF
// N NUMBERS USING RECURSION
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 sum(n int) int {

   // this is the base condition
   // if num is equal to 0
   if n == 0 {

      // function will return 0 and end the recursive function
      return 0
   } else {

      // recursive call to sumofn ()
      return n + sumofn(n - 1)
   }
}

// defining the function with a parameter of int
// type and have a return type int
func sumofn(n int) int {

   // this is the base condition
   // if num is equal to 0
   if n == 0 {

      // function will return 0 and end the recursive function
      return 0
   } else {

      // recursive call to function sum ()
      return n + sum(n - 1)
   }
}

// start the main() function
func main() {

   // Declare and initialize integer variable
   number := 55
   fmt.Println("Sum of first n numbers using recursion in Golang Program")

   // calling the function sum()
   fmt.Printf("Sum of first %d numbers is %d", number, sum(number))

   // Prints the final result
}

输出

Sum of first n numbers using recursion in Golang Program
Sum of first 55 numbers is 1540

代码的描述

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

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

  • 接下来我们创建了一个函数natural1(),使用递归技术求自然数之和。

  • 接下来,我们创建一个函数sum(),使用递归技术找到n个数字的总和。

  • 我们将使用if…else条件语句,它允许你在指定条件为真时执行一个代码块,在条件为假时执行另一个代码块。

  • 如果n等于0,函数将返回0并结束递归函数

  • 否则函数将递归调用函数sumofn()并返回(n + sumofn(n-1))

  • 接下来我们创建一个函数sumofn(),类似于上述函数,对函数sum()进行递归调用,并返回(n + sum(n-1))

  • 现在启动函数main()

  • 接下来初始化整数变量number

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

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

总结

在上面的两个例子中,我们已经成功地编译并执行了Golang程序代码,使用递归技术找到了n个数字的和。我们展示了直接和间接类型的递归方法。在第一个例子中我们展示了直接递归方法,在第二个例子中我们展示了间接递归方法。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程