前言必读
1.什么是方法递归?
答:方法自己调用自己。
2.递归存在的问题?
答:如果没有控制好终止,会出现栈溢出 。
3.递归能干嘛?
答:在开发中用的比较少,一般都能用for语句就可以来完成了。这属于可以不用,但是不能不会的一种方法。
例子:
1.计算阶乘(例如计算5的阶层就是1*2*3*4*5)
思路理解:比如计算5的阶层就是4组乘法,把最高阶逐第五组5渐往下寻找到最小值1。然后1*2得出的数字再传递去*3,继续传上去直到最高阶5就可以计算出来了。
package bao;
public class Test {
public static void main(String[] args) {
//调用返回的f方法
System.out.println("运行结果为:"+f(5));
}
//计算阶层方法
public static int f(int n){
//判断阶层n是否为1
if (n == 1){
return n;
}//层层递归到最小值1再来计算
else {
return f(n-1)*n;
}
}
}
运行结果:
运行结果为:120
2.文件搜索(找到后还能打开指定的文件)
以打开QQ为例子(多练习就可以记住了)
package bao;
import java.io.File;
import java.io.IOException;
public class Test {
public static void main(String[] args) {
//一、2.传入盘符文件和要搜索指定的文件名称
searchFile(new File("D:\\"),"QQ.exe");
System.out.println();
}
//一、1.创建一个要搜索文件的对象
public static void searchFile(File dir,String fileName){
//一、3.判断dir是否是目录
if (dir!=null&& dir.isDirectory()){
//二、可以找了
//二、1提取当前目录下的一级文件
File[] f = dir.listFiles();
//二、2.判断一遍文件夹里面有没有东西才继续遍历
if (f!=null&&f.length>0){
//正式遍历
for (File file : f) {
//二、3判断里面文件还是文件夹
if (file.isFile()){
//是文件,输出
if (file.getName().contains(fileName)){
System.out.println("找到了"+file.getAbsolutePath());
//三、附带技能,启动,出现异常抛出捕捉就好
Runtime r = Runtime.getRuntime();
try {
r.exec(file.getAbsolutePath());
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}else {
//是文件夹,递归寻找(调用自己再循环来一次)
searchFile(file ,fileName);
}
}
}
}else {
System.out.println("当前搜索的不是文件夹,不支持!");
}
}
}
运行结果:
找到了D:\软件安装\QQ\Bin\QQ.exe
旁白:
1. 这个方法递归主要的就是用来计算遍历的,和算法有关。开发中用到并不多。优点就是相同重复方法的一直检索可以用这个,阶乘计算等。
2.还能用来检索文件夹里面的文件位置在哪里,也可以打开文件。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/112698.html