本文目錄一覽:
關於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
原創文章,作者:WHJL,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/133865.html