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