vlambda博客
学习文章列表

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)计算结果的这一句

递归其实非常简单,不过在实际中也很实用,一定要掌握