java中的递归如何理解,能举个例子最好了,希望说的详细一点,比如说有递归入口,递归出口什么的
发布网友
发布时间:2022-05-03 10:03
我来回答
共4个回答
热心网友
时间:2023-10-20 11:14
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() 语句,显示每次调用的阶数以及中间结果
不知道这么说,你能理解不
热心网友
时间:2023-10-20 11:14
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(files[i]); //如果是目录,递归调用
}else{
System.out.println("file:"+files[i].getName());//输出文件名
}
}
}
}
热心网友
时间:2023-10-20 11:14
LZ可以去看下这篇文章:
http://java.ccidnet.com/art/3539/20060723/650619_1.html
热心网友
时间:2023-10-20 11:15
递归不就是自己调用自己吗?直到满足某一定特定条件就跳出来。
热心网友
时间:2023-10-20 11:14
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() 语句,显示每次调用的阶数以及中间结果
不知道这么说,你能理解不
热心网友
时间:2023-10-20 11:14
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(files[i]); //如果是目录,递归调用
}else{
System.out.println("file:"+files[i].getName());//输出文件名
}
}
}
}
热心网友
时间:2023-10-20 11:14
LZ可以去看下这篇文章:
http://java.ccidnet.com/art/3539/20060723/650619_1.html
热心网友
时间:2023-10-20 11:15
递归不就是自己调用自己吗?直到满足某一定特定条件就跳出来。
热心网友
时间:2023-10-20 11:14
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() 语句,显示每次调用的阶数以及中间结果
不知道这么说,你能理解不
热心网友
时间:2023-10-20 11:14
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(files[i]); //如果是目录,递归调用
}else{
System.out.println("file:"+files[i].getName());//输出文件名
}
}
}
}
热心网友
时间:2023-10-20 11:14
LZ可以去看下这篇文章:
http://java.ccidnet.com/art/3539/20060723/650619_1.html
热心网友
时间:2023-10-20 11:15
递归不就是自己调用自己吗?直到满足某一定特定条件就跳出来。