递归算法

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

 

 

 

我们可以举个简单的例子来运用下递归算法。我们在读初中的时候,老师一般会出这样一道题目:计算出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+sum99+sum98+……+sum1),通过不断的改变传入的数据,从而实现递归调用。

一、递归的应用

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

二、递归的注意事项

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

<!--EndFragment-->

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值