天天看点

Go语言学习心得--Go语言递归函数

递归,就是在运行的过程中调用自己。

既然说到递归,那我就得先说一下在JAVA语言中的递归,

递归的基本思想就是

“自己调用自己”,一个使用递归技术的方法会直接或间接的调用自己

递归构造包括两个部分:

定义递归头。什么时候不调用自身方法,如果没有头,将陷入死循环

递归体。什么时候需要调用自身方法,递归一般都是从案例中提现出来的,我们可以实现一下看看

Go语言学习心得--Go语言递归函数

递归算法代码显得很简洁,但递归算法解题的运行效率较低。所以不提倡用递归设计程序。

在递归调用的过程中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等,所以一般不提倡用递归算法设计程序。

在做递归算法的时候,一定把握出口,也就是做递归算法必须要有一个明确的递归结束条件。这一点是非常重要的。其实这个出口就是一个条件,当满足了这个条件的时候我们就不再递归了。

 递归算法会很容易造成内存占用过大的情况,慎用!

 下面我们会所一下这个Go语言中的递归算法吧。

语法格式:

func recursion() {
   recursion() /* 函数调用自身 */
}

func main() {
   recursion()
}
           

Go 语言支持递归。但我们在使用递归时,开发者需要设置退出条件,否则递归将陷入无限循环中。

递归函数对于解决数学上的问题是非常有用的,就像计算阶乘,生成斐波那契数列等。

我们用Go语言实现阶乘试试

Go语言学习心得--Go语言递归函数

阶乘的结果

Go语言学习心得--Go语言递归函数

斐波那契数列

Go 语言的递归函数实现斐波那契数列:

Go语言学习心得--Go语言递归函数

实例结果如下

Go语言学习心得--Go语言递归函数

以上就是Go语言递归函数的使用