递归与循环,通常是我们用来解决,问题规模大,并且有重复性的步骤的问题
我一般会使用递归,因为递归的逻辑清晰,代码实现起来方便,今天我们不去关注,时间复杂度,空间复杂度,栈溢出的情况,只去考虑两种编程的理论与代码的相结合。
就拿一个简单的二分法来讲吧。如果你脑海里是递归的想法,去写一个循环解决的方法的话,相信我你会遍体鳞伤,不信,你可以去试试,很多细节之处,你可能考虑不到位,导致你的程序出现错误。如果你此时还是用递归的思想去检查代码,会很难去发现问题,但是如果你转变思路,去使用循环的思想,你很快就能够发现问题,并去解决它。
这样其实有点多此一举的感觉,如果你是递归的思想,就去写递归的算法,循环的思想就去写循环的算法。想清楚再去写。很多算法没有绝对意义上的好与坏,环境不同我们的选择不同,如果排序就用一种,查找也``用一种,什么都去用一种,未免太死板了些吧。
给大家看看我的代码吧,欢迎批评。
递归算法:
当到达边界条件和找到key的时候,不再去调用自身,直接返回。
循环算法:找到了就直接返回位置,根本没找到就返回-1
希望大家关注我,我会互关的,一起学习,一起进步。