求JAVA递归的应用
发布网友
发布时间:2022-05-29 09:48
我来回答
共3个回答
热心网友
时间:2023-10-14 23:40
/*递归的经典例子很多,许多基础课本都会讲到“汉诺塔”,这个,就不给你了,上网搜,相当多的。
不过,楼上大哥说递归都可以用循环解决,可能是小弟俺所学太少,无法苟同。下面, 是用递归实现批量文件的复制。(当然,你千万别以为我递归的是文件,只是文件名)。之所以要用递归,是因为,文件夹是可以一个套一个,它套了多少个,你不知道。如果不用递归,恐怕只能复制有限层文件夹及文件,且你的代码相当长。
这个Copy.java实现的功能是将e盘文件夹1中的所有东西复制并按照原来文件夹的结构放入"e:\\1x"中,这与在操作系统中的复制粘贴是一样的。只不过,通过设置数组b的大小,可以有效地控制复制的速度(尤其在复制大文件时可以看出的区别)。*/
import java.io.*;
public class Copy
{
static String s="e:\\1x";
public void xcopy(File f)
{
for(File f1:f.listFiles())
{
File f2=new File(s+(f1.getPath().replace("e:\\1","")));
if(f1.isDirectory())
{
f2.mkdirs();
xcopy(f1);
}
else
{
try
{
FileInputStream fis=new FileInputStream(f1);
FileOutputStream fos=new FileOutputStream(f2);
byte b[]=new byte[1000];
while(fis.available()>0)
{
fis.read(b);
fos.write(b);
}
fos.flush();
fis.close();
fos.close();
}
catch(IOException e)
{
System.out.println("Error");
}
}
}
}
public static void main(String args[])
{
File f=new File("e:\\1");
new Copy().xcopy(f);
}
}
热心网友
时间:2023-10-14 23:41
LS怎么我看到的不是这样呢?
递归表面上是调用同一个函数,可是实际上是不同的,也就是说你递归调用函数A十次,其实在栈内有十个A这样的函数。
递归虽能解决一些比较复杂的问题,但是能不用递归还是不要用的好,因为它受程序语言调用次数的*,就像快速排序,递归排100万个数就排不出来
热心网友
时间:2023-10-14 23:41
JAVA递归的问题都能用循环解决,而且这样在一个函数体内解决,不调用系统栈,速度快,性能高。