第三章 递归

第三章 递归

递归是一种强大的方法,它允许一个对象以其自身更小的形式来定义自己。恐怕没有什么比观察神秘的自然界中出现的递归现象更好的方法来体会递归的重要意义了。想想蕨类植物的叶子,每片叶子的小枝干都是整片叶子的较小缩影;又或者两个反光的物体,相互映射对方的渐远的影像。这样的例子使我们明白尽管大自然的力量是强大的,在许多方面它那种出乎意料的简洁更让我们觉得优美。同样的道理也可用在递归算法上,从很多方面来说递归算法都是简洁而优美的,而且还非常强大。

在计算机科学领域,递归是通过递归函数来实现的。递归函数是一种可以调用自身的函数。每次成功的调用都使得输入变得更加精细,使我们越来越接近问题的答案。大多数开发者都喜欢将大型的问题分解成一些小型的问题,然后分别编写不同的函数去处理它们。然而,许多开发者却并不习惯于用单一函数递归的去解决大型的问题。诚然,以这种方式去看待问题需要一定的适应过程。本章探讨了递归是如何工作的并展示了如何以递归的方式去定义问题。本书中的一些递归方面的例子有树的遍历(见第9章),图中的广度优先和深度优先查找(见第11章),以及排序(见第12章)。

 

本章的内容包括:

基本递归

一种强大的方法,允许一个问题以其自身越来越小的形式来定义自己。在计算机科学领域,我们通过使用递归函数来解决带有递归性质的问题,也就是用函数自身调用自身。

尾递归

递归的一种形式,这里编译器会为此产生优化过的代码。大多数现代的编译器能够识别出尾递归。为此,只要条件允许我们都应该利用这个特性。

 

PS:

1、此书(Mastering Algorithms with C)译稿版权归本人(Love_Lei)及好友(bigship)共同所有,未经本人同意谢绝一切转载,并不得抄袭,模仿,盗版!更请大家监督盗版之人!

2、由于本人水平有限,如对译文有任何建议和异议,欢迎大家留言指正,我们共同讨论学习!谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值