百科图片IN词微百科科普汇名人百科有奖任务百科商城

递归算法

开放分类:数学术语术语科学自然科学计算机术语

递归算法是把问题转化为规模缩小了的同类问题的子问题。然后递归调用函数(或过程)来表示问题的解。

编辑摘要

目录

1概述
2汉诺塔C语言递归算法
递归算法 - 概述

程序调用自身的编程技巧称为递归( recursion)。
一个过程或函数在其定义或说明中又直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。用递归思想写出的程序往往十分简洁易懂。
一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。
注意:
(1) 递归就是在过程或函数里调用自身;
(2) 在使用递增归策略时,必须有一个明确的递归结束条件,称为递归出口,否则将无限进行下去(死锁)。

递归算法一般用于解决三类问题:
(1)数据的定义是按递归定义的。(Fibonacci函数)
(2)问题解法按递归算法实现。(回溯)
(3)数据的结构形式是按递归定义的。(树的遍历,图的搜索)

递归的缺点:
递归算法解题的运行效率较低。在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。

递归算法 - 汉诺塔C语言递归算法

递归算法 递归算法图册
汉 诺(Hanoi)塔问题:古代有一个梵塔,塔内有三个座A、B、C,A座上有64个盘子,盘子大小不等,大的在下,小的在上(如图)。有一个和尚想把这 64个盘子从A座移到C座,但每次只能允许移动一个盘子,并且在移动过程中,3个座上的盘子始终保持大盘在下,小盘在上。在移动过程中可以利用B座,要求 打印移动的步骤。
这个问题在盘子比较多的情况下,很难直接写出移动步骤。我们可以先分析盘子比较少的情况。假定盘子从大向小依次为:盘子1,盘子2,...,盘子64。
如果只有一个盘子,则不需要利用B座,直接将盘子从A移动到C。
如果有2个盘子,可以先将盘子1上的盘子2移动到B;将盘子1移动到c;将盘子2移动到c。这说明了:可以借助B将2个盘子从A移动到C,当然,也可以借助C将2个盘子从A移动到B。
如果有3个盘子,那么根据2个盘子的结论,可以借助c将盘子1上的两个盘子从A移动到B;将盘子1从A移动到C,A变成空座;借助A座,将B上的两个盘子移动到C。这说明:可以借助一个空座,将3个盘子从一个座移动到另一个。
如果有4个盘子,那么首先借助空座C,将盘子1上的三个盘子从A移动到B;将盘子1移动到C,A变成空座;借助空座A,将B座上的三个盘子移动到C。
上述的思路可以一直扩展到64个盘子的情况:可以借助空座C将盘子1上的63个盘子从A移动到B;将盘子1移动到C,A变成空座;借助空座A,将B座上的63个盘子移动到C。
根据以上的分析,不难写出程序:
void Move(char chSour,char chDest)
{
/打印移动步骤/
printf("\nMove the top plate of %c to %c",chSour,chDest);
}
Hanoi(int n,char chA,char chB,char chC)
{
/检查当前的盘子数量是否为1/
/盘子数量为1,打印结果后,不再继续进行递归/
if(n==1)Move(chA,chC);
/盘子数量大于1,继续进行递归过程/
else
{
Hanoi(n-1,chA,chC,chB);
Move(chA,chC);
Hanoi(n-1,chB,chA,chC);
}
}
main()
{
int n ;
/输入盘子的数量/
printf("\nPlease input number of the plates: ");
scanf("%d",&n);
printf("\nMoving %d plates from A to C:",n);

/*调用函数计算,并打印输出结果*/
Hanoi(n,'A','B','C');

}

如果n为4,程序输出结果为:
Moving 4 plates from A to C:
Move the top plate of A to B
Move the top plate of A to C
Move the top plate of B to C
Move the top plate of A to B
Move the top plate of C to A
Move the top plate of C to B
Move the top plate of A to B
Move the top plate of A to C
Move the top plate of B to C
Move the top plate of B to A
Move the top plate of C to A
Move the top plate of B to C
Move the top plate of A to B
Move the top plate of A to C
Move the top plate of B to C

相关文献

万方数据期刊论文一类多折叠环面混沌吸引子 - 物理学报 - 200453 ( 7 )
万方数据期刊论文基于二叉树思想的任意多边形三角剖分递归算法 - 武汉大学学报(信息科学版) - 200227 ( 5 )
万方数据期刊论文基于受控递归算法的时频分析 - 电子科技大学学报 - 201140 ( 5 )
经典计算机算法介绍

算法是计算机科学中一门古老而常新的学科,就像一个人的思维能力一样,其重要性对于计算机性能的分析、应用与改进有着至不言而喻的地位。而随着计 算机科学技术的发展,新的算法也随着新的应用渐渐出现,但总有一些算法由于其本身具有的特点以及对计算机科学发展做出的卓越贡献而成为经典,本任务就是要 介绍这些经典算法。
Dijkstra算法
哈希表算法
贪婪算法
随机化算法
排序算法 分治算法
最优二叉树算法
回溯算法
舍伍德算法
拉斯维加斯算法 分支界限算法
递归算法
统计算法
动态规划算法
流水线算法 最大流
最小费用流
蒙特卡洛算法
搜索算法
单纯行算法
附图

递归算
递归算法

点击认领
开放分类:数学术语术语科学自然科学计算机术语

递归算法是把问题转化为规模缩小了的同类问题的子问题。然后递归调用函数(或过程)来表示问题的解。

编辑摘要

目录

1概述
2汉诺塔C语言递归算法
递归算法 - 概述

程序调用自身的编程技巧称为递归( recursion)。
一个过程或函数在其定义或说明中又直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。用递归思想写出的程序往往十分简洁易懂。
一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。
注意:
(1) 递归就是在过程或函数里调用自身;
(2) 在使用递增归策略时,必须有一个明确的递归结束条件,称为递归出口,否则将无限进行下去(死锁)。

递归算法一般用于解决三类问题:
(1)数据的定义是按递归定义的。(Fibonacci函数)
(2)问题解法按递归算法实现。(回溯)
(3)数据的结构形式是按递归定义的。(树的遍历,图的搜索)

递归的缺点:
递归算法解题的运行效率较低。在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。

递归算法 - 汉诺塔C语言递归算法

递归算法 递归算法图册
汉 诺(Hanoi)塔问题:古代有一个梵塔,塔内有三个座A、B、C,A座上有64个盘子,盘子大小不等,大的在下,小的在上(如图)。有一个和尚想把这 64个盘子从A座移到C座,但每次只能允许移动一个盘子,并且在移动过程中,3个座上的盘子始终保持大盘在下,小盘在上。在移动过程中可以利用B座,要求 打印移动的步骤。
这个问题在盘子比较多的情况下,很难直接写出移动步骤。我们可以先分析盘子比较少的情况。假定盘子从大向小依次为:盘子1,盘子2,...,盘子64。
如果只有一个盘子,则不需要利用B座,直接将盘子从A移动到C。
如果有2个盘子,可以先将盘子1上的盘子2移动到B;将盘子1移动到c;将盘子2移动到c。这说明了:可以借助B将2个盘子从A移动到C,当然,也可以借助C将2个盘子从A移动到B。
如果有3个盘子,那么根据2个盘子的结论,可以借助c将盘子1上的两个盘子从A移动到B;将盘子1从A移动到C,A变成空座;借助A座,将B上的两个盘子移动到C。这说明:可以借助一个空座,将3个盘子从一个座移动到另一个。
如果有4个盘子,那么首先借助空座C,将盘子1上的三个盘子从A移动到B;将盘子1移动到C,A变成空座;借助空座A,将B座上的三个盘子移动到C。
上述的思路可以一直扩展到64个盘子的情况:可以借助空座C将盘子1上的63个盘子从A移动到B;将盘子1移动到C,A变成空座;借助空座A,将B座上的63个盘子移动到C。
根据以上的分析,不难写出程序:
void Move(char chSour,char chDest)
{
/打印移动步骤/
printf("\nMove the top plate of %c to %c",chSour,chDest);
}
Hanoi(int n,char chA,char chB,char chC)
{
/检查当前的盘子数量是否为1/
/盘子数量为1,打印结果后,不再继续进行递归/
if(n==1)Move(chA,chC);
/盘子数量大于1,继续进行递归过程/
else
{
Hanoi(n-1,chA,chC,chB);
Move(chA,chC);
Hanoi(n-1,chB,chA,chC);
}
}
main()
{
int n ;
/输入盘子的数量/
printf("\nPlease input number of the plates: ");
scanf("%d",&n);
printf("\nMoving %d plates from A to C:",n);

/*调用函数计算,并打印输出结果*/
Hanoi(n,'A','B','C');

}

如果n为4,程序输出结果为:
Moving 4 plates from A to C:
Move the top plate of A to B
Move the top plate of A to C
Move the top plate of B to C
Move the top plate of A to B
Move the top plate of C to A
Move the top plate of C to B
Move the top plate of A to B
Move the top plate of A to C
Move the top plate of B to C
Move the top plate of B to A
Move the top plate of C to A
Move the top plate of B to C
Move the top plate of A to B
Move the top plate of A to C
Move the top plate of B to C

相关文献

万方数据期刊论文一类多折叠环面混沌吸引子 - 物理学报 - 200453 ( 7 )
万方数据期刊论文基于二叉树思想的任意多边形三角剖分递归算法 - 武汉大学学报(信息科学版) - 200227 ( 5 )
万方数据期刊论文基于受控递归算法的时频分析 - 电子科技大学学报 - 201140 ( 5 )
经典计算机算法介绍

算法是计算机科学中一门古老而常新的学科,就像一个人的思维能力一样,其重要性对于计算机性能的分析、应用与改进有着至不言而喻的地位。而随着计 算机科学技术的发展,新的算法也随着新的应用渐渐出现,但总有一些算法由于其本身具有的特点以及对计算机科学发展做出的卓越贡献而成为经典,本任务就是要 介绍这些经典算法。
Dijkstra算法
哈希表算法
贪婪算法
随机化算法
排序算法 分治算法
最优二叉树算法
回溯算法
舍伍德算法
拉斯维加斯算法 分支界限算法
递归算法
统计算法
动态规划算法
流水线算法 最大流
最小费用流
蒙特卡洛算法
搜索算法
单纯行算法
附图

为本词条添加视频和组图相关影像

开放分类:我来补充
数学术语 术语 科学 自然科学 计算机术语 计算机科学技术名词 计算机算法 计算机编程
互动百科的词条(含所附图片)系由网友上传,如果涉嫌侵权,请与客服联系,我们将按照法律之相关规定及时进行处理。未经许可,禁止商业网站等复制、抓取本站内容;合理使用者,请注明来源于www.baike.com

欢迎加入互动百科大家庭,和互动百科超过770万专业认证智愿者一起,分享你的真知灼见。

如果你对大家的讨论有兴趣,可以点击“赞”和“鄙视”的大拇指,来表达你的看法。

讨论区的精彩内容,会被用户顶到最上面,让更多人感受到大家的推荐,你注意到了吗?

登录后使用互动百科的服务,将会得到个性化的提示和帮助,还有机会和770多万专业认证智愿者沟通。

互动百科用户登录
您也可以使用以下网站账号登录:
人人网账号登录
QQ账号登录
新浪微博账户登录
此词条还可添加 信息模块
递归算法图册
WIKI热度

该词条未被认领,赶快点击认领吧!
编辑次数:13次 历史版本
参与编辑人数:11位
最近更新时间:2013-11-13 10:48:11
贡献光荣榜

更多
创建者:不*死鸟
我爱你的眼睛

中国语言文学副教授
無國界

大学生
hzwjh

大学生
绿领巾

中国语言文学讲师
宫华

大学生
相关词条

编辑
JDBC
java数据库连接
plascal教程
递归可枚举集
EOS
PHP
可计算性理论
nesC
anaconda
pascal语言教…
分类热词

函数
中央处理器
五角星
物理学
运算放大器
质量
圆周率
三角函数
压力
相对论
请提意见
帮助中心
服务热线:86-10-62303127(9:00-21:00)
关于我们
新闻中心
服务协议
互动合作
友情链接
招聘信息
联系我们
站点地图
知识官网
百科营销
互动在线 版权所有 Powered by HDwiki © 2015

编辑
分享

扫描二维码用手机浏览词条
保存二维码可印刷到宣传品
你感兴趣

JDBC JDBC
递归可枚举集 递归可枚举集
EOS EOS
PHP PHP
关闭

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

推荐阅读更多精彩内容

  • **2014真题Directions:Read the following text. Choose the be...
    又是夜半惊坐起阅读 8,604评论 0 23
  • 我不知道树会不会有它的使命,但他们似乎从来不介意它们的出身,无论是废弃的烟囱里,还是破旧的下水管道中,还是路边一角...
    九襄木阅读 148评论 0 1
  • 由于本专题收录的诗歌越来越多,为了方便大家的阅读,汉皇特意把本专题的所有诗歌制作成了本目录,并且会一直置顶。这样大...
    刘汉皇阅读 856评论 0 1
  • 刚才 骤起骤停的风雨 仅仅是 两场台风之间的 一个破折号 “天鸽”的哨音 尚在天空回响 “帕卡”隆隆的鼓声 已从遥...
    夜跑如风阅读 161评论 2 7
  • 1. 阿宇,在事业单位上班,早九晚五。杨杨,护士,三班倒。两人是大学校友还是老乡,都是独自飘在远方求学的孩子。各种...
    aries诺诺阅读 498评论 1 6