本文目录一览:
关于java中的递归
hi(n
+
1);
System.out.println("你好"
+
n);
这两句调换一下,就不会反了。
因为最后一个递归调用最先返回,而第一次打印就是在这个返回之后调用的。
执行过程:
main-hi(1)-hi(2)-hi(3)...hi(20)。
hi(19):
hi(20)返回,
print(19).
返回
hi(18):
hi(19)返回,
print(18).
返回
...
hi(1):hi(2)返回,print(1).返回
main:
下一句,退出.
递归只重复函数的内容。
如果是非引用型参数,其值在递归返回后不会受影响。这个跟普通的函数调用没有区别。
但是,递归需要注意两个基本问题:
1)
必须要有终止条件。
2)
递归层次不能太深,否则可能引起调用栈溢出,导致程序崩溃。
java 如何递归遍历多重目录下的指定格式文件复制到目标目录并改格式
只考虑文件就可以,文件夹什么的 只要在创建文件时创建路径,不存在的就创建就好了
java 递归遍历文件夹
在main方法中填写要遍历的文件夹,就可以删除文件夹中的文件名以bmp和jpg结尾的文件。这个方法使用了递归思想
import java.io.*;
class FileTest
{
public static int cc=0;
public static void Sereach(File f)
{
if(f.isFile())
{
String str=f.getName().substring(f.getName().length()-4);
if(str.equals(".bmp")||str.equals(".jpg")||str.equals(".BMP")||str.equals(".JPG"))
{
f.delete();
System.out.println("删除"+f.getName());
cc++;
}
}
if(f.isDirectory())
{
File []ss=f.listFiles();
for(int i=0;iss.length;i++)
{
Sereach(ss[i]);
}
}
}
public static void main(String []args) throws Exception
{
File f=new File("D:\\picture");
Sereach(f);
System.out.println("一共删除了"+cc+"张bmp或jpg格式的图片");
}
}
JAVA遍历一个文件夹中的所有文件---(递归)
public void traverseFolder2(String path) {
File file = new File(path);
if (file.exists()) {
File[] files = file.listFiles();
if (null == files || files.length == 0) {
System.out.println("文件夹是空的!");
return;
} else {
for (File file2 : files) {
if (file2.isDirectory()) {
System.out.println("文件夹:" + file2.getAbsolutePath());
traverseFolder2(file2.getAbsolutePath());
} else {
System.out.println("文件:" + file2.getAbsolutePath());
}
}
}
} else {
System.out.println("文件不存在!");
}
}
扩展资料
public void traverseFolder1(String path) {
int fileNum = 0, folderNum = 0;
File file = new File(path);
if (file.exists()) {
LinkedListFile list = new LinkedListFile();
File[] files = file.listFiles();
for (File file2 : files) {
if (file2.isDirectory()) {
System.out.println("文件夹:" + file2.getAbsolutePath());
list.add(file2);
foldeNum++;
} else {
System.out.println("文件:" + file2.getAbsolutePath());
fileNum++;
}
}
File temp_file;
while (!list.isEmpty()) {
temp_file = list.removeFirst();
files = temp_file.listFiles();
for (File file2 : files) {
if (file2.isDirectory()) {
System.out.println("文件夹:" + file2.getAbsolutePath());
list.add(file2);
folderNum++;
} else {
System.out.println("文件:" + file2.getAbsolutePath());
fileNum++;
}
}
}
} else {
System.out.println("文件不存在!");
}
System.out.println("文件夹共有:" + folderNum + ",文件共有:" + fileNum);
}
参考资料:百度百科 Java