Golang程序 使用递归查找自然数之和
在本教程中,我们将学习如何在Golang中使用递归来寻找自然数之和。
递归是指一个函数通过直接或间接方式调用自己。每个递归函数都有一个基数或基数条件,它是递归中最后的可执行语句,并停止进一步的调用。
下面是两个例子,显示了两种不同类型的递归:直接和间接。
用直接递归法求自然数之和
语法
func recursion() {
recursion()
}
func main() {
recursion();
}
算法
- 第1步– 导入软件包fmt
-
第2步 – 创建函数naturalnum()
-
第3步 – 我们将使用一个if…else条件语句
-
第4步 – 启动函数main()
-
第5步– 初始化整数变量
-
第6步–调用函数naturalnum()
-
第7步 – 使用fmt.Printf()在屏幕上打印结果。
例子
使用直接递归法,用递归法寻找自然数之和的Golang程序代码。
// GOLANG PROGRAM TO FIND THE SUM OF
// NATURAL 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 naturalnum(num int) int {
// this is the base condition
// if num is not equal 0
if num != 0 {
// recursive call to itself
return num + naturalnum(num-1)
} else {
// function will return num and end the recursive function
return num
}
}
// start the main() function
func main() {
fmt.Println("Golang Program to find the sum of natural numbers using recursion")
// initializing the integer variable
number := 10
// calling the naturalnum() function
fmt.Printf("Sum of all the natural numbers till %d is %d", number, naturalnum(number))
// Prints the final result
}
输出
Golang Program to find the sum of natural numbers using recursion
Sum of all the natural numbers till 10 is 55
代码的描述
- 在上面的程序中,我们首先声明包main
-
我们导入了fmt包,其中包括包fmt的文件。
-
接下来,我们创建了一个函数naturalnum(),使用递归技术寻找自然数的和。
-
我们声明整数变量num
-
我们将使用if…else条件语句,它允许你在指定条件为真时执行一个代码块,在条件为假时执行另一个代码块。
-
如果num不等于0,则递归调用该函数本身
-
否则函数将返回num并结束递归函数
-
现在启动函数main()
-
接下来初始化整数变量number
-
现在调用naturalnum()函数
-
最后用fmt.Printf()在屏幕上打印结果。
用间接递归法求自然数之和
语法
func recursion_1() {
recursion_2()
}
func recursion_2(){
recursion_1()
}
func main() {
recursion_1();
}
算法
-
第1步– 导入软件包fmt
-
第2步 – 创建函数natural1 ()
-
第3步 – 我们将使用if…else条件语句
-
第4步 – 创建函数natural2()
-
第5步–间接递归调用函数natural1()
-
第6步 – 启动函数main()
-
第7步– 初始化整数变量num
-
第8步–调用函数natural1()
-
第9步 – 使用fmt.Printf()在屏幕上打印结果。
例子
使用间接递归法,用递归法求自然数之和的Golang程序代码
// GOLANG PROGRAM TO FIND THE SUM OF
// NATURAL 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 natural1(num int) int {
// this is the base condition
// if num is not equal 0
if num != 0 {
// recursive call to the second function
return num + natural2(num-1)
} else {
// function will return num and end the recursive function
return num
}
}
func natural2(num int) int {
// this is the base condition
// if num is not equal 0
if num != 0 {
// recursive call to the first function indirectly
return num + natural1(num-1)
} else {
// function will return num and end the recursive function
return num
}
}
// start the main() function
func main() {
fmt.Println("Golang Program to find the sum of natural numbers using recursion")
// initializing the integer variable
number := 50
// calling the natural1() function
fmt.Printf("Sum of all natural numbers till %d is %d", number, natural1(number))
// Prints the final result
}
输出
Golang Program to find the sum of natural numbers using recursion
Sum of all natural numbers till 50 is 1275
代码的描述
- 在上面的程序中,我们首先声明包main
-
我们导入了fmt包,其中包括包fmt的文件。
-
接下来,我们创建了一个函数natural1(),使用递归技术寻找自然数之和。
-
我们将使用if条件语句,它允许你在指定条件为真时执行一个代码块,然后递归调用函数natural2()
-
接下来我们创建一个函数natural2().这里对第一个函数进行递归调用,间接调用第一个函数natural()
-
现在启动函数main()。GO程序的执行从函数main()开始。
-
接下来我们调用natural1()函数来寻找自然数之和。
-
最后使用内置函数fmt.Printf()将结果打印在屏幕上。这个函数定义在fmt包下,它有助于编写标准输出。
总结
在上面的两个例子中,我们已经成功地编译并执行了Golang程序代码,使用递归技术找到自然数的和。我们展示了直接和间接类型的递归方法。在第一个例子中我们展示了直接递归方法,在第二个例子中我们展示了间接递归方法。
极客教程