软考考点之下午题算法与程序设计2018下半年 求最优配对方案字符对数

本文深入探讨了递归与递推公式的概念及其在算法设计中的应用,通过实例解析了递归算法的设计策略,对比了递归与递推在解决问题时的不同思维方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如2018年下半年下午第四题:

题:4.1(8分)
根据题干说明,填充C代码中的空(1)-(4)。
题:4.2 (4分)
根据题干说明和C代码,算法采用的设计策略为(5)
算法的时间复杂度为(6),(用O表示)。
题:4.3 (3 分〉
给定字符序列ACCGGUAGU ,根据上述算法求得最大字符对数为(7)

答:第一次看到题,还是一头雾水,甚至连题目要表达的意思都没搞懂,并且,看答案后,可以说是第一题填空题,全军覆没……。

字体解释是没太看明白的,直接看代码;直到空1处,大体是从5到n-1嵌套从1到n-k(这个可以理解为5前面的字符串)循环,下面是要做什么呢?

j=i+k;//j 代表从6位置开始的字符, j表示结束比较的位置

空1处填:max=C[i][j-1];//将一行的最后一个数用来放置配对字符对数,只是初始化max

for(   空2  ;t<=j-4;t++)//应该是关于初始化t的 ,t结合上下文应该是开始比较的位置  ;所以应该填 t=i  j-4应该是结束位置前四个字符处作为结束比较条件

if(  空3       &&max<C[i}[t-1]+1+C[t][j-1])//结合题中唯一的递归公式,可以知道应该是判断是不是匹配字符   ;应该填isMatch(B[t],B[j});

空4  是作为整体最大配对数的返回,应该填  max ;

总结:相比于2019年上半年的算法题,这道题,提示是相当少的,也比较难以理解,递归公式是解这道题的关键。尽管能够分析出递归公式就是要填的内容,但要想完全填对,还是挺困难的。

扩展:

如何看懂递归公式呢??????

递归算法概念是函数调用自己来实现的某种功能

1.递归是高中数学中的数列那一章讲的内容。数列这章讲了一个概念叫递推公式:如果已知数列的第1项(或前几 项),且从第二项(或某一项)开始的任一An与它的前一项An-1(或前几项)间的关系可以用一个公式来表 示,那么这个公式就叫递推公式,递推公式是给出数列的一种方法。

2.例如斐波那契数列的递推公式就是:An=An-1+An-2(n>2,a1=1,a2=1)

3.那么现在如果想用递归的方式表示斐波那契数列即可定义函数f(n):当n>2时f(n)=f(n-1)+f(n-2);当n=1时f(n)=1,当n=2时f(n)=1;

即private static int fibonacciRe(int i) {
if(i == 1 || i == 2)
return 1;
else if(i>2)
return fibonacciRe(i-1)+fibonacciRe(i-2);
else
return 0;
}

4.解释:其实说白了递归函数就是一个递推公式,只要递推公式往纸上一写,把项A替换成函数名字,把n替换成函的 参数即可,最后用if处理一下特殊参数值时的结果值就欧了。

所有的递归问题都可以用递推公式来表示,其实我们的计算机算法都来源于 数学,计算机算法是数学应用于生产的很好的一个例子!

说到这里,可以说对递归及递推有些理解了,但如何区分他们公式之间的不同呢?

通项、递推、递归的区别:
通项公式,是用自然数n的表达式表示数列的“通项”f(n)的公式,
递推,是由含有数列前边的若干项的表达式表示后边某一项的公式。通俗点说就是从前往后的过程
如果表达式中仅含数列前边的若干项(允许有常数系数),这个公式就叫递归公式。递归不仅要从前往后,还有个回递的过程

递归法:把问题转化为规模更小的子问题解决,思考的重点在于建立原问题和子问题之间的联系。有的问题有很明确的递归结构,但是需要仔细的思考,才能正确的转化为结构相同的子问题。

递推法:根据已知信息不断的计算出未知信息,直到得到结果,思考的重点在于“步步为营”。

从函数方程观点看,递推,递归公式实际都是函数方程,而通项公式则是它们的解。
为了方便,把只含数列中的项(可以带有系数)的递推公式叫递归公式,一般形式:

一旦给出通项公式,数列便被唯一地确定。但递推特别是递归公式却不然,给出一个递归公式后,会有无穷多数列都满足这个递归公式,这是因为,由k阶递归公式的数列,它的前k项无法由递归公式本身确定。但给出数列的前k项的值后,递归公式就唯一地确定了数列,把数列前k项的值叫初值条件。同一个递归公式,由于初值条件不同,将得到不同的数列。

这段话还是容易理解的。做一个简易例子,假如f(n+1)=2f(n),容易看出是一个等比数列,公比为2,符合这种条件的等比数列有无穷个,只有限定初项才能形成唯一一个数列。

构造首项为1,公比为q的等比数列,使它满足递归公式:

 

最后得到:

称之为递归公式的特征方程

 如果两个通项公式满足递归公式,则
1.每一项乘以一个常数仍满足
2.相乘之后,两个通项公式的各项再相加,依然符合递归公式。

 如:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guangod

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值