2.1.1 递归函数

一、什么是递归函数

  1. 如果一个函数直接或简介调用这个函数本身,则该函数称为递归函数

  2. 实际开发中,递归函数可以解决数学问题:如阶乘、斐波那切数列等

  3. 构成递归函数还需要如下条件:

    1. 一个问题可以拆分成许多个子问题

    2. 拆分前的问题与拆分后的子问题除了数据规模不同,处理问题的思路是一样的

    3. 不能无限制的调用本身,子问题需要有退出递归状态的条件

    注意:编写递归函数时,一定要有终止条件,否则就会无限调用下去,直到内存溢出

  4. Go语言递归函数形式如下:

    func FuncName(param paramType) {
    	if param == condition {
    		return
    	}
    	
    	var param2 paramType2 = xxx
    	FuncName(param2)
    }

    解释:

    定义一个名为FuncName()的函数,传递一个参数param

    函数中做判断,如果满足条件,直接return,否则,继续调用函数本身

二、多个函数组成递归

  1. Go语言中也可以使用相互调用的递归函数,多个函数之间相互调用形成闭环

  2. 因为Go语言编译器的特殊性,这些函数的声明顺序可以是任意的

  3. 举例:展示函数Odd()Even()之间的相互调用

    结果:

Last updated