递归算法的分析和学习心得

      程序直接或间接调用自身的编程技巧称为递归算法。一个函数在它的函数体内调用它自身的过程称为递归调用,这种函数称为递归函数。C语言允许函数的递归调用。在递归调用中,主调函数又是被调函数。执行递归函数将反复调用其自身,每调用一次就进入新的一层。递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归优秀在代码简洁,但首先需要有清晰的思路理清递归条件及出口。递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。有时递归需要多次重复某一计算,可以用数组记录下需要的数据进行调用大大降低空间复杂度。     

      我了解了递归问题求解思路,首先弄清递归的本质,其次分而治之,然后按照分而治之的理论,设计一个好的函数模型是递归的关键,最后递归终止条件必不可少。分治法的设计思想是,将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。

     分治法在每一层递归上都有三个步骤:分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题;解决:若子问题规模较小而容易被解决则直接解,否则递归地解各个子问题;合并:将各个子问题的解合并为原问题的解。

      在现实中,有很多问题往往需要我们把其所有可能穷举出来,然后从中找出满足某种要求的可能或最优的情况,从而得到整个问题的解。使用递归的另一个原因是要更多地利用不变性。在理想的递归实现中,所有变量都是最终变量,所有数据都是不可变的,并且从某种意义上说,递归方法都是纯函数,因为它们什么都不会变异。方法的行为可以简单地理解为其参数与其返回值之间的关系,而对程序的任何其他部分均无副作用。这种范例称为函数式编程,比使用循环和变量的命令式编程要容易得多。

      通过对课程的理论学习与实践,我掌握了许多经典的算法思想,思维创新能力和实践能力得到了有效的提高,并且一题多解的情况让我对不同的算法有了更加深刻的认识。这些知识在我今后的学习中将会得到更深层次的理解与应用,要根据情况选择不同的算法解决问题。

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值