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

go programmingserver side programmingprogramming

在本教程中,我们将学习如何使用 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() 在屏幕上打印结果

示例

使用递归查找 N 个数字之和的 Golang 程序代码使用直接递归方法。

// GOLANG PROGRAM TO FIND THE SUM OF // N NUMBERS USING RECURSION package main // fmt 包提供了打印任何内容的功能 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 并结束递归函数

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

  • 现在启动 main() 函数

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

  • 现在调用 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 包提供了打印任何内容的功能 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 个数字的总和。我们展示了直接和间接类型的递归方法。在第一个例子中,我们展示了直接递归方法,在第二个例子中,我们展示了间接递归方法。


相关文章