什么是递归函数?怎样实现递归?

简介: 什么是递归函数?怎样实现递归?

递归就是一个函数在它的函数体内调用它自身。执行递归函数将反复调用其自身,每调用一次就进入新的一层。递归函数必须有结束条件。


当函数在一直递推,直到遇到墙后返回,这个墙就是结束条件。


所以递归要有两个要素,结束条件与递推关系。


递归有两个基本要素:


(1)边界条件:确定递归到何时终止,也称为递归出口。


(2)递归模式:大问题是如何分解为小问题的,也称为递归体。递归函数只有具备了这两个要素,才能在有限次计算后得出结果


在递归函数中,调用函数和被调用函数是同一个函数,需要注意的是递归函数的调用层次,如果把调用递归函数的主函数称为第0层,进入函数后,首次递归调用自身称为第1层调用;从第i层递归调用自身称为第i+1层。反之,退出第i+1层调用应该返回第i层。


一个递归函数的调用过程类似于多个函数的嵌套的调用,只不过调用函数和被调用函数是同一个函数。为了保证递归函数的正确执行,系统需设立一个工作栈。具体地说,递归调用的内部执行过程如下:


(1)运动开始时,首先为递归调用建立一个工作栈,其结构包括值参、局部变量和返回地址;


(2)每次执行递归调用之前,把递归函数的值参和局部变量的当前值以及调用后的返回地址压栈;


(3)每次递归调用结束后,将栈顶元

相关文章
|
4月前
|
算法
【算法】递归总结:循环与递归的区别?递归与深搜的关系?
【算法】递归总结:循环与递归的区别?递归与深搜的关系?
104 0
|
6月前
|
机器学习/深度学习 C语言
|
6月前
|
C语言
C语言函数递归详解:理解递归的原理与应用
C语言函数递归详解:理解递归的原理与应用
126 0
|
6月前
|
C语言
C语言学习记录——用递归思想求第n个斐波那契数,函数递归
C语言学习记录——用递归思想求第n个斐波那契数,函数递归
31 0
|
7月前
|
Java Python
汉诺塔递归问题,递归思路详解
汉诺塔递归问题,递归思路详解
116 0
|
7月前
|
算法 Java C语言
C语言函数的递归
C语言函数的递归
64 0
|
算法 C语言
C语言函数递归练习详解
C语言函数递归练习详解
认识了解递归的原理,学会递归的运用
认识了解递归的原理,学会递归的运用
|
机器学习/深度学习 算法 C语言
函数递归-------套娃套路深,要么你玩递归,要么递归玩你
函数递归-------套娃套路深,要么你玩递归,要么递归玩你

热门文章

最新文章