java中的递归如何理解,能举个例子最好了,希望说的详细一点,比如说有递归入口,递归出口什么的

来源:百度知道 编辑:UC知道 时间:2024/06/14 06:53:13
谢谢

class Factorial {
int fact(int n) {
int result;
if (n == 1) return 1;
result = fact(n-1) * n;
return result;
}
}
它是这样工作的:当fact( ) 带着参数1被调用时,该方法返回1;否则它返回fact( n-1 ) 与n的乘积。为了对这个表达式求值,fact() 带着参数n-1 被调用。重复这个过程直到 n 等于 1,且对该方法的调用开始返回。
给你据个例子:
例如当计算3 的阶乘时,对fact() 的第一次调用引起参数2的第二次调用。这个调用将引起fact 以参数1 的第三次调用,这个调用返回1,这个值接着与2(第二次调用时n的值)相乘。然后该结果(现为2)返回到fact()的最初的调用,并将该结果与3(n的初始值)相乘。这时得到答案,6。如果你在fact()中插入println() 语句,显示每次调用的阶数以及中间结果
不知道这么说,你能理解不

递归不就是自己调用自己吗?直到满足某一定特定条件就跳出来。

import java.io.File;

public class FileListDemo {
public static void main(String[] args){
getAllFiles(new File("c:/"));
}
public static void getAllFiles(File dirPath){
System.out.println("dir:"+dirPath.getName()); //输出目录名
File[] files = dirPath.listFiles(); //得到目录下所有的文件和目录
for(int i=0;i<files.length;i++){
if(files[i].isDirectory()){
getAllFiles(fi