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()在屏幕上打印结果
示例
使用间接递归方法在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 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(),并像上面的函数一样进行了递归调用,返回(n + sum(n-1))
-
现在开始执行函数main()
-
接下来初始化整数变量number
-
现在调用第一个函数sum()
-
最后使用fmt.Printf()在屏幕上打印结果。
结论
在以上两个示例中,我们已经成功编译并执行了使用递归技术找出n个数的总和的Golang程序代码。我们展示了直接和间接类型的递归方法。在第一个示例中,我们展示了直接递归方法,在第二个示例中,我们展示了间接递归方法。