相信很多初学的伙伴对递归是又爱又恨,递归能很轻松的解决一些复杂问题,但是理解起来太过抽象,对新手小白很不友好,今天这篇博客就让我来为大家分享一下我学习递归的心得和在学习过程中的一些误区,希望这篇博客能够帮到你;
因为自己淋过雨,所以也想为别人撑伞!
要理解递归首先要明白什么是递归?
递归,在计算机科学中是指一种通过重复将问题分解为同类的子问题而解决问题的方法。
这只是网上随便都能搜到的官方解释,对很多伙伴帮助并不大,该懵逼还是懵逼,那我们不妨从俗套的现实问题中理解递归微妙的过程:
你想将心仪已久的女神拿下,女神很喜欢编程,这个时候你想将自己的女神追到手要会编程吧(有共同话题才能有机会嘛)但是会编程必须得学数据结构和算法,学数据结构和算法又必须得会一门语言,学习语言要了解它基本的语法,在语法之下我们应该去好好了解计算机的底层操作原理,一但掌握底层操作原理后我们就可以往回一步一步的去实现我们的目标,最后成为编程大牛拿下女神!
当然还有一种情况,女神可能对你并不会设置跳出条件,就算你是编程大牛了也不会做你女朋友,有些兄弟可能在这个过程中不断的寻找让她回心转意的条件,这样注定没有结果的死循环就是死递归;
让我们回到计算机中,正确的递归一定有两个条件,有这两个条件不一定对,但没有这两个条件一定是错误的递归:
1.递归一定有一个跳出的条件,当达到这个条件的时候将不会递下去了,而是归来;
2.每次递归一定是逐渐接近这个跳出条件的;
我们来看编程中递归的例子:
输入一个整数n如何打印它的每一位数字?
我们想要得到n的每个数字可以用这样的方法
n = 1234 ,那么 n%10=4,我们就得到了n的个位数4
n/10=123,n%10=3,给n除10我们就得到了123,123再模10我们就得到了n的十位数3
以此类推我们分别就能得到n的所有位数了
如何用递归实现?
首先我们写一个函数reverse来实现这个问题