学习感想

来自一个普通的省内双非的普通一本院校的学校,计算机系的学生,目前只开了程序设计和ACM算法,前者要是学习语言的规则和用法,后者则是教你怎样去灵活的运用这些语言来解决实际的问题,相辅相成。对于第一周的算法课,我感到了它不同于规则的学习,它更偏向于思维的发散和锻炼一个人的解决问题的能力,但是也同样展示这门课的学习难度,但是,算法的基础性,和重要性是无可替代的。它最大的应用莫过于现在的人工智能技术。如果算法学不好,我们就很难接触当今时代前沿的科技。

学习方法

对于计算机算法,我们要保正它的正确性,并有具体的步骤,合理而高效的表达方式。所以要求了我们思维的严谨性。我们对它的学习必须是兴趣使然,而后再坚持不懈。其实对于大学算法学习,只能概括为刷题,每学习了一种算法就去刷几道关于它的题目,不会了,去看看别人的思路,不到最后一刻,不查看别人的源代码。思路可能大同小异,要看我们如何设计的高效。凡是总要想着我也去写写看。杨绛曾说过:“现在的年轻人总是想得多,做的少”。

递归算法

基本思想:
层层分解
把一个不能或不好解决的大问题转化为一个 或几个小问题,再把这些小问题进一步分解 成更小的小问题。
问题关键:

递归定义:使问题向边界条件转化的规则。递 归定义必须能使问题越来越简单
递归的终止条件:所描述问题的最简单情况,它本身不再使用递归的定义。
解题步骤:
1)分析问题、寻找递归:找出大规模问题与小 规模问题之间的关系,这样通过递归使问题的规 模逐渐变小。
2)设置边界、控制递归:找出停止条件。
3)设计函数、确定参数:设计函数体中的操作 及相关参数。

典型例题

斐波那契数列第a个数的大小:

int fn(int a) {     if(a==1||a==2)//第一项和第二项         return 1;     else         return fn(a-1)+fn(a-2);//反复调用 }
  • 版权声明:文章来源于网络采集,版权归原创者所有,均已注明来源,如未注明可能来源未知,如有侵权请联系管理员删除。

发表回复

后才能评论