1. 算法简介
递推和递归虽然叫法不同,但它们的基本思想是一致的,在很多程序中,这两种算法可以通用,不同的是递推法效率更高,递归法更方便阅读。
(1)递推法
递推法是一种重要的数学方法,同时也是计算机进行数值计算的个重要算法。
递推法的核心是找到计算前后过程之间的数量关系,即递推式。递推式往往根据已知条件和所求问题之间存在的某种相互联系推导得出。递推计算时,需要将复杂运算转换为若干步重复的简单运算,这样可以发挥计算机擅于重复处理数据的特点。递推法避开了求通项公式的麻烦,把一个复杂问题的求解分解成了连续的若干歩简单运算,可以将递推法看成一种特殊的迭代算法。
[案例解析]铺方格
有2×n个长方形的方格,用一个1×2的骨牌铺满方格。例如当0=3时为2×3方格,骨牌的铺放方案有3种,
骨牌铺设方案(1)
编写一个程序,试对给出的任意一个n(n>0)输出铺法总数。针对这个问题,要想直接获得问题的解答是相当困难的。可以用递推法,从简单到复杂逐步归纳出问题解的一般规律。分析过程如下。
当n=1时,只能有一种铺法 ,如图4-2(a)所示,铺法总数为X1=1。
当n=2时,骨牌可以并列竖排,也可以并列横排,再无其他排列方法,如图2(b)所示,铺法总数为X2 =2。
当n=3时,骨牌可以全部竖排,也可以认为在方格中已经有一个竖排骨