Go语言递归函数写法
我是JokerD
说到递归,大家都能想到c++中的递归,c++的递归肯定是很简单的
递归中,我们通常使用return
语句调用相同的函数
int f(int n){
if (n <= 1)
return 1;
else
return n*f(n-1);
}
然而go的递归,那就更简单了
递归的思路就是用前几步的结果得出这一步的结果
func recursion() {
recursion()
}
func main() {
recursion()
}
所以go语言的递归程序就很好写出来了
求阶乘的话就是调用前几个数相乘的结果再乘下一个数
下面这个代码的核心就是result = n * Factorial(n-1)计算阶乘
package main
import "fmt"
func Factorial(n uint64)(result uint64) {
if (n > 0) {
result = n * Factorial(n-1)
return result
}
return 1
}
func main() {
var i int = 15
fmt.Printf("%d\n", Factorial(uint64(i)))
}
递归的典型例题除了阶乘那就是斐波那契数列了
代码和阶乘类似
package main
import "fmt"
func f(n int) int {
if n < 2 {
return n
}
return f(n-2) + f(n-1)
}
func main() {
var i int
for i = 0; i < 10; i++ {
fmt.Printf("%d\t", f(i))
}
}
与上一个代码一样,重点也是在return f(n-2) + f(n-1)计算结果的这一句
递归其实非常简单,不过在实际中也很实用,一定要掌握