递归的思考

本文探讨了递归的概念,对比了递归与迭代的优缺点。递归虽然思路清晰、程序简洁,但效率较低,适合于问题的逐步求解。递归函数通常包括终结情况和递归步骤,尾递归可以转换为循环。正确性分析涉及递归函数的定义和递归过程的回溯验证。文章通过多个例子展示了如何分析和设计递归函数,强调了函数声明在递归设计中的重要性。
摘要由CSDN通过智能技术生成

理论上的概念

  • 1.函数的主要成分是一个循环,则此种解法叫做迭代,而当函数是通过不断调用自己解决问题的,那么此种解法就叫做递归。
  • 2.递归既浪费时间,又浪费空间,所以递归的效率很低,在要求高性能、低内存的算法上递归不适用。要转换为迭代方法。
  • 3.在迭代函数中必须有程序员自己完成的工作(参数入栈,出栈,转移,返回等)在递归函数中交由系统啦实现。通过隐藏某些实现细节,用时间和空间代价减少了程序设计的工作量,总的来说就是递归思路清晰,程序简洁。
  • 4.尾递归是完全可以转换为while循环实现的,因为尾递归就相当于在程序的尾部把递归函数用程序不断替代,while完全可以实现。
  • 5.递归函数内部一般由两部分定义,第一部分是终结情况,第二部分是递归步骤。
  • 6.递归程序中的递归部分对本层次的程序功能不产生影响(如果递归函数中没有引用传递),分析程序的功能时对其中的递归部分可以只意会,不深究。

求解递归问题的心得:

1某些问题的求解,递归函数设计的正确性很大程度上取决于函数申明的设计(函数的参数以及函数的意义的定义)如hanoi问题。这种问题貌似在函数体中直接应用递归定义,就可以方便的实现递归过程,得到结果。

2.还有一些问题,递归方法比较复杂,函数体中不单纯的只有递归的存在。递归在函数体中只是作为解决方法的一个步骤(只是一小段代码)。求解问题的思想是逐步的,递归只是能够更好的实现这种逐步求解,例如8皇后问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值