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个数字的和。我们展示了直接和间接类型的递归方法。在第一个例子中我们展示了直接递归方法,在第二个例子中我们展示了间接递归方法。
极客教程