一个递归函数的成长史

昨天看了归并排序和快速排序,排序的思路都理解了,代码是使用递归实现的,但是在单步调试的时候,断点跳来跳去,整个人都晕了,所以我执着的精神又开始发挥作用了,在网上找了个类似的例子,一步步调试过来,终于断点如我所愿的跳了出来。决定把思路整理一下,这也是菜鸟成长史的一小步吧,言归正传。

一、什么是递归函数?

递归函数即自调用函数,在函数体内直接或间接调用自己(也就是调用的函数是自己本身)。

二、函数的调用机制

1、需要设置自调用的条件,如果满足条件,则调用函数本身,如果不满足条件,则终止本函数的自调用,然后把目前流程的主控权交回给上一层函数来执行;

2、每调用一次函数就“入栈”一次,函数执行完了,就“出栈”一次;

三、递归的评价

1、缺点:递归增加了系统的开销,从时间上,执行调用与返回的额外工作需要占用一定的时间,从空间上来讲,每递归一次,就要入栈一次,即栈内存就多占用一截。

2、优点:简化程序设计、程序容易读懂。

下面这几个是个人觉得关于递归函数和递归函数的执行机制,写的很容易理解的博文:

递归函数理解

 递归函数的执行机制和运用

深入理解递归函数的调用过程


四、华丽丽的成长史

这个是我参考的博文,递归算法示例,写的很详细、通俗易懂。

首先贴出代码:

递归调用代码

下面是程序的运行结果:

运行结果

下面是整个程序的执行过程;

运行过程

对结果进行分析:

运行结果

a、步骤10~14重复了步骤4~8,因为它们都调用了p(1),所以结果5重复了结果4,输出都是1;

b、步骤17~29重复了步骤3~15,因为它们都调用了p(2),所以第6、7、8个结果重复了第3、4、5个结果,输出都是2、1、1;

c、步骤31~58重复了步骤2~29,因为它们都调用了p(3),所以第9~15个结果重复了第2~8个结果,输出都是3、2、1、1、2、1、1。

总之,要理解函数递归调用的机制必须明白每对函数进行一次调用,函数就入栈一次,函数执行完了,就出栈一次,如果还不是很明白,可以结合程序运行过程的说明,对代码进行单步调试,这样会比较容易理解。


迈过了递归的坎儿,终于可以整理归并排序和快速排序的知识点了,很开森的我于是就屁颠屁颠的跟着师父去兴庆公园赏花啦!

P(4)
P(3)
P(2)
P(1)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,045评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,114评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,120评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,902评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,828评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,132评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,590评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,258评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,408评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,335评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,385评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,068评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,660评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,747评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,967评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,406评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,970评论 2 341

推荐阅读更多精彩内容