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

谢谢~~... 谢谢~~ 展开
 我来答
教育小百科达人
推荐于2019-09-29 · TA获得超过156万个赞
知道大有可为答主
回答量:8828
采纳率:99%
帮助的人:466万
展开全部

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

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

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

递归有两个基本要素:

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

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

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

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

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

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

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

扩展资料:

递归就是某个函数直接或间接地调用了自身,这种调用方式叫做递归调用。说白了,还是函数调用。既然是函数调用,那么就有一个雷打不动的原则:所有被调用的函数都将创建一个副本,各自为调用者服务,而不受其他函数的影响。

你的ff函数,递归多少次,就有多少个副本,再利用内存的栈式管理,反向退出。这个最好找一下“栈”这方面的东西看看,挺容易的,就像子弹匣一样,先进后出。

从某种意义上说,这是不对的,因为就像刚才说的,一旦被调用,他将在内存中复制出一份代码,再被调用就再复制一份,换句话说,你可以吧同一个函数的多次调用理解称谓多个不同函数的一次调用,这样也会会简单些。

再说=1和=0是为什么退出。递归,很需要注意的就是死递归,也就是说,某一个函数进入了无限调用自身的情况,永无止境地消耗内存等资源,这在编程方面是一大忌。

但凡是递归的函数,一定会在某一个地方存在能够返回上一层函数的代码,否则必定死递归。ff函数中,那个else就是返回的出口,你可以这样想,如果没有那个if来进行判断,你递归到什么时候算完?ff是不是会一直调用自己。

因为一旦某个函数A中调用了函数B(或者自己),那么A中的代码会停在调用的位置,而转向B中去执行,同理,如果B又调用函数C,那么B又停在调用的位置,去执行C,如果无限调用,那么程序是永远不会结束的。

当然,也有这种情况,A调用B,然后继续自己的代码,不管B的死活,这种不在我们的讨论范围内,因为那牵扯到另一种编程方式:多线程。

参考资料:百度百科——递归函数

清心又谦恭丶布丁9
推荐于2017-10-11 · TA获得超过6604个赞
知道小有建树答主
回答量:1247
采纳率:100%
帮助的人:1866万
展开全部
递归就是本身调用自己。
如n!=n(n-1)!
你定义函数f(n)=nf(n-1)
而f(n-1)又是这个定义的函数。。这就是递归。

实现递归。简单说来从未知的推到已知的
如:3!=3*2!
2!=2*1!
1!=1(已知的)

然后从已知再返回调用给上一层。到你所要求的
1!=1(已知)
2!=2*1!=2*1=2
3!=3*2!=3*2=6
递归结束
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
麦香甜甜圈
2009-07-27 · TA获得超过792个赞
知道小有建树答主
回答量:209
采纳率:0%
帮助的人:171万
展开全部
比方说有一个函数叫max,它有两个参数,它的功能是求两个参数中较大的那个数。
例如:a=2,b=4, 则max(a,b)的值是4.
若现在有四个数a,b,c,d,利用max函数求出其中最大的数,怎么写呢?显然有很多方法,像是:max(max(a,b),max(c,d))
max(max(max(a,b),c),d)
不知道这个例子能否帮助你理解“递归”?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hdjxk
高粉答主

2019-12-23 · 说的都是干货,快来关注
知道大有可为答主
回答量:3.5万
采纳率:82%
帮助的人:4987万
展开全部
递归就是一个函数在它的函数体内调用它自身。执行递归函数将反复调用其自身,每调用一次就进入新的一层。递归函数必须有结束条件。
当函数在一直递推,直到遇到墙后返回,这个墙就是结束条件。
所以递归要有两个要素,结束条件与递推关系。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
秒懂百科精选
高粉答主

2020-12-26 · 每个回答都超有意思的
知道答主
回答量:60.8万
采纳率:14%
帮助的人:3.1亿
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式