递归是怎么一回事?哪位老师能否通俗易懂的讲讲原理?
发布网友
发布时间:2022-04-23 10:01
我来回答
共2个回答
热心网友
时间:2023-10-10 15:16
递归通俗的讲就是一个函数在其代码中反复调用自身。你应该知道菲波纳契数列,这个数列的定义是
f(x)=1 (x=1)
f(x)=2 (x=2)
f(x)=f(x-1)+f(x-2) (x>2)
也就是说从第三项开始的每一项的值都等于是前两项之和。这在数学中叫递推数列--高中数学内容。
如果把它变为一个要求第n个菲波纳契数的代码的话,应该如下所示(为了避免语言不通:)我使用伪代码):
int f(int step)
在这里x为上面所说的x变量,也就是要求的是第x项的值
{
if step=1
{
return 1
}
else if step=2
{
return 2
}
如果求得是第一项和第二项的话,就分别返回1和2,并退出函数
return f(x-1)+f(x-2)
否则的话就返回前面两项的和
}
这里的关键是最后一句。这里函数的返回直又要反过去调用它自身计算前面两项的值,这样就会反复调用,直到x变量在某次调用中变为1和2,返回已知的第一项和第二项的值,在层层返回,最后得出要求的第x项的值
说到本质的话,递归是一段程序的代码反复效用,把程序的参数等变量保存在一个堆栈里,直到到了边界条件以后再层层返回,将堆栈中的数据弹出计算,最后得到结果
热心网友
时间:2023-10-10 15:16
补充一下,递规包括直接递规和间接递规。直接递规是指在代码中反复调用自身,而间接递规是间接地调用自身。
比如:
int g(int x);
int f(int x)
{
if( x<=0 )
return x ;
else
return g(x-1)+2 ;
}
int g(int x)
{
return f(x)*x ;
}
益学堂的都业华讲中枢理论,但我看原著时看到的递归是什么意思呢?
递归是原著中讲到的数学函数,我们不需要做过多研究探讨。都老师的课上是把原著中的数学公式、理论阐述成通俗易懂的方法以便大家理解的。
...的成长教育具有重要作用。”这句话为什么是递归性?
由于在现时的社会大环境、应试教育模式和接收西方开放式教育等重重因素影响下,我们的孩子就像生活在一个大染缸里一样,很容易就被染污了,沾染上某些不良习气,例如娇横任性、叛逆不听话、不诚实、上网成瘾、打架、厌学、好动、注意力不集中、上课不专心等问题,尤其是处于幼儿及青少年阶段的中学生情况更...
...一下是老师的代码,老师说还可以用递归的方法。求解释。
2. 当统计完所有数据个位上的1的个数以后,我们还需要统计这些数据十位及以上的各位的一的个数,也就是不考虑个位了。既然不考虑个位,那就相当于把原来的数据个位都去掉,也就是把原来的数除以10,来统计了;此时,原来的十位成为了个位,这个问题就又转换成了统计个位上1的个数的问题了。要注...
赵老师,请问一个菜鸟问题:c#中,静态函数可以正确实现递归调用功能吗?静 ...
先来给你解释一下这个问题.递归其实最开始是程序员们为了方便自己写特殊的循环所使用.最开始的初衷是实现例如∑ 等数学运算所衍生出的循环方式.那么这么来看.你在一个循环中是否可以调用一个函数.问题只出在你的访问权限.从您的描述中来看.您想到的或者说担心的应该是所谓的变量值的存在时长或生命周期...
哪里有姜久才老师的计算机二级VF考试的视频讲课资料(要的全部的,不是...
一、计算机系统组成及工作原理 ⒈计算机系统组成: ⑴计算机的发展。 ⑵计算机的分类及应用。 ⑶计算机硬件结构。 ⑷主要部件功能。 ⑸计算机软件的功能与分类。 ⑹系统软件与应用软件。 ⒉计算机工作原理: ⑴计算机中数的表示。 ⑵运算器。 ⑶控制器。 ⑷存储器。 ⑸输入与输出系统。 ⒊计算机的主要性能: ⑴计算机...
日拱一卒,伯克利YYDS,用Python写一个Lisp解释器(五)
只要理解了尾递归的原理,代码就水到渠成了。Problem 21 macros允许语言本身被用户拓展,简单的macros可以被define-macro特殊类型实现。不过必须以定义过程的形式执行,它也会创建一个过程,就像是define一样。然而这个过程拥有一个特殊的的evaluate规则:它先应用参数,而不是先evaluate参数,再evaluate结果。 最终的评估过程在...
数据结构,怎么利用非递归后序遍历找到x节点的所有祖先,以我的智商...
当在二叉树中后序遍历到访问某结点时 ,从栈顶到栈底正好是该结点从双亲开始直到根的所有结点(当然也就是该结点的所有祖先),因此这段程序就是非递归到该结点时,从栈底到栈顶输出栈中所有元素,也就是该结点的所有祖先
python怎么学习?
一、清楚学习目标 无论是学习什么知识,都要有一个对学习目标的清楚认识。只有这样才能朝着目标持续前进,少走弯路,从学习中得到不断的提升,享受python学习计划的过程。虽然目前的编程语言有很多,但是基础语法上的概念,本质上都是相通的。可以做到一通百通。所以没有必要为了学哪门语言纠结太多。python...
自学c语言 零基础 看什么书 该怎么学
《《啊哈C语言:小学生坐在马桶上都可以读懂的C语言编程入门书》.zip》百度网盘资源免费下载 链接:https://pan.baidu.com/s/1aEXrb1oxnRmMWUlafELpfQ 提取码:pusr啊哈C语言:小学生坐在马桶上都可以读懂的C语言编程入门书
大学数学(计算机专业)
我个人认为,用哪种语言属于末节,关键在养成良好的编程习惯。当年老师对我们说,打好基础后学一门新语言只要一个星期。现在我觉得根本不用一个星期,前提是先把基础打好。不要再犹豫了,学了再说,等你抉择好了,别人已经会了几门语言了。 汇编语言和微机原理是两门特烦人的课。你的数学/理论基础再好,也占不到...