5.5小时教学视频、86个趣味算法题、61个算法面试题,一学就会!帮您开阔眼界,培养编程兴趣,提高编程能力,增强求职的竞争力!
特别提示
《妙趣横生的算法(C语言实现)》配套多媒体教学视频和涉及的实例代码收录于《妙趣横生的算法(C语言实现)》配书光盘中。另外,《妙趣横生的算法(C语言实现)》适合作为相关学校的教材使用。为了方便老师授课,《妙趣横生的算法(C语言实现)》专门配备了相应的教学PPT。
《妙趣横生的算法(C语言实现)》内容生动有趣,寓教于乐,旨在帮您开阔眼界,培养编程兴趣,提高编程能力。增强求职的竞争力。如果您想在程序设计之路上走得更远,请翻开《妙趣横生的算法(C语言实现)》,仔细研读吧,它将助您一臂之力。
《妙趣横生的算法(C语言实现)》特色
◎提供了5.5小时多媒体教学视频,学习起来比较直观。
◎提供了24个数据结构和算法的基础知识实例,便于读者入门。
◎提供了86个经典、有趣、贴近生活、实用性强的算法实例。
◎提供了61个算法及数据结构的面试题。增强求职者的竞争力。
◎内容梯度科学,既适合入门,也适合进一步提高和研究。
◎书中实例用C语言实现,便于读者验证及加深对C语言的理解。
◎既涵盖基本理论,又包含大量实例,寓理论于实践之中。
◎讲解由浅入深,通俗易懂,将复杂问题简单化,读者可以轻松掌握。
海报:
《妙趣横生的算法(C语言实现)》理论与实践相结合,旨在帮助读者理解算法,并提高C语言编程能力,培养读者的编程兴趣,并巩固已有的C语言知识。全书分为2个部分共10章,内容涵盖了编程必备的基础知识(如数据结构、常用算法等),编程实例介绍,常见算法和数据结构面试题等。《妙趣横生的算法(C语言实现)》最大的特色在于实例丰富,题材新颖有趣,实用性强,理论寓于实践之中。通过《妙趣横生的算法(C语言实现)》的学习,可以使读者开阔眼界,提高编程的兴趣,提高读者的编程能力和应试能力。
《妙趣横生的算法(C语言实现)》附带1张光盘,内容为《妙趣横生的算法(C语言实现)》源代码和作者为《妙趣横生的算法(C语言实现)》录制的5.5小时多媒体教学视频。
《妙趣横生的算法(C语言实现)》可作为算法入门人员的教程,也可以作为学习过C语言程序设计的人士继续深造的理想读物,也可作为具有一定经验的程序设计人员巩固和提高编程水平,查阅相关算法实现和数据结构知识的参考资料,同时也为那些准备参加与算法和数据结构相关的面试的读者提供一些有益的帮助。
其实阶乘的数学定义可以用递归函数来简单地描述:
这样的函数称为递归函数,因为该函数本身直接或间接地调用了该函数本身。基于阶乘的递归函数的描述,就不难设计出计算n的阶乘n!的递归算法。
可以看出,使用递归算法解决阶乘问题形式上更加简洁,更易于人们理解。
在设计递归算法时要注意以下几点。
(1)每个递归函数都必须有一个非递归定义的初始值,作为递归结束标志,或递归结束的出口。就像实例3.5所描述的递归算法中的if(n-0)ret啪l;如果一个递归算法中没有这个非递归定义的初始值,那么该递归调用是无法计算出具体的值的(或无法得到结果),同时该递归调用也无法结束。
(2)在设计递归算法时,要解决的问题需具有递归性。例如要计算,2的阶乘n!,n!的定义本身具有递归性。这种所谓的递归性实际上就是一种反复调用自身过程的特性。
(3)虽然采用递归算法解决问题,特别是一些复杂问题,更加方便且容易实现,但是递归方法的运行较低,时间和空间复杂度都比较高,因此对于一些对时间和空间要求较高的程序,建议使用非递归算法设计。
在实际的算法设计中,递归与分治如同一对兄弟,经常结合在一起使用。这是因为,由分治的方法产生的子问题往往都是原问题的更小规模。反复使用分治的手段,可使子问题与原问题类型一致,但规模不断缩小,最终使子问题比较容易求解。既然子问题与原问题的类型一致,这就具有了所谓的递归性,因此可以使用递归的方法用解决原问题的算法去解决同类型的子问题。在第2章中介绍的折半查找算法只是单纯地使用了分治的策略,在下面的实例分析中将使用递归与分治思想相结合的方法进行折半查找算法的设计。
……