递归算法

系统 1420 0

递归算法是一种特殊的调用形式,是方法自己调用自己,这样有点比较难理解,但我们也可以认为方法调用另外一个方法,只不过方法名相同而已,且方法的算法也相同。这样也许还是比较难理解,我们可以用一个图来表示该算法:

 

  递归算法

 

我们可以举个简单的例子来运用下递归算法。我们在读初中的时候,老师一般会出这样一道题目:计算出 1+2+3+ …… +100 的结果,现在学程序阶段,我们首先想到的一般是用循环来做,但其实我们也可以使用递归算法来做这道题目。代码如下:

public   class  Test {

public   static   void  main(String[] args) {

System. out .println( "计算结果:" + sum (100));

}

 

private   static   int  sum( int  num) {

if (num==1){

 

return  1;

}

else {

return  num+ sum (num-1);

}

}

}

程序运行结果:

计算结果: 5050

上面程序完成了递归算法的调用,其实就详单与 100+sum 99 +sum 98 + …… +sum 1 ),通过不断的改变传入的数据,从而实现递归调用。

一、 递归的应用

递归算法用于处理一些无法穷举的计算(像上面的计算是可以穷举的出的),这些算法有一个共同点就是计算数据或对象的变化是用规律的,也即算法相同。这时,我们就可以不断使用这个方法自己调用自己,从而算出计算结果。比如计算一台电脑中某个文件夹所包含的文件的个数,这时我们可以发现这个无法穷举的,因为我们不知道这个文件夹包含多少个文件夹以及文件,这时就可以使用递归算法来算。读者可以自己去试试。

二、 递归的注意事项

递归调用在操作时如果处理不好,则有可能出现内存的溢出。从我们上面的程序就可以发现,递归调用时必须要有一个明确的结束条件,这样,在调用递归时就有一个明确的推出条件,否则很容易进入死循环。

<!--EndFragment-->

递归算法


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论