您的位置:首页 > 职场人生

黑马程序员-递归思想

2014-01-15 20:06 211 查看
-------- android培训java培训、期待与您交流! --------

递归:函数本身直接或间接的调用了自身
什么时候使用:一个功能在被重复使用,并在每次使用时,参与运算的结果和上一次调用有关,这是可以用递归来解决问题
注意:递归一定要明确条件。否则容易栈溢出(StackOverflowError)

直接调用

public static void show() {
show();
}

间接调用(但要小心使用,搞不好就内存溢出了):

  public static void show() {
method();
}

public static void method() {
show();
}

使用递归思想求和:

这只是个例子,千万背在程序中用,数一大,就出事了,我往里面传了个7000,运行时cpu使用率从%10左右瞬间达到70%以上,我往里面穿了个8000,栈内存溢出了!

  public static int getSum(int num) {
if(num==1)	return 1;//这个条件非常重要,要是没有,会导致栈溢出,,感受一下,你就知道!

return num+getSum(num-1);

}

十进制转换为二进制:
public static void toBin(int num) {
if (num>0) {
toBin(num/2);
System.out.print(num % 2);
}
}

删除多层目录:
一个目录下面要是有东西的话,这个目录是不能能直接给干掉的,必须把里面的东西干掉之后,才行。
一句话:从最里面往外删。
public class RemoveDi
4000
rectory {
public static void main(String[] args) {
//先创建一多层目录
File dir=new File("first");//封装成对象
dir.mkdirs();//创建多层目录

//删掉这个多层目录。
removeDir(dir);
}

public static void removeDir(File dir) {
File[] files=dir.listFiles();
for(File file:files){
if(file.isDirectory()){
removeDir(file);
}else{
System.out.println(file+":"+file.delete());
}
}
System.out.println(dir+":"+dir.delete());
}
}

-------- android培训java培训、期待与您交流! --------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息