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() 在屏幕上打印结果
示例
使用递归查找 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 个数字的总和。我们展示了直接和间接类型的递归方法。在第一个例子中,我们展示了直接递归方法,在第二个例子中,我们展示了间接递归方法。