java中的递归
❶ java中的List递归
/*
* 读取XML文档
*/
public void ReadDocument(){
SAXReader reader = new SAXReader(); //创建SAXReader对象
try {
Document document = reader.read(new File("student.xml")); //获取文档对象
Element root = document.getRootElement(); //获取根节点
this.ReadNode(root);
} catch (DocumentException e) {
e.printStackTrace();
}
}
/*
* 读取节点 输出节点中的值
*/
public void ReadNode(Element element){
List list = element.elements(); //获得子节点
if(list.size()==0){
String str = element.getText(); //获取节点中的文本
System.out.println(element.getName()+": "+str);
}else{
for (int i = 0; i < list.size(); i++) {
Element ele = (Element)list.get(i); //获取节点对象
ReadNode(ele);
}
}
}
❷ 在JAVA中什么是递归有什么用
程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。
递归的三个条件:
边界条件
递归前进段
递归返回段,当边界条件不满足时,递归前进;当边界条件满足时,递归返回。
❸ JAVA中的递归方法
自己调用自己或几个方法相互调用。
最经典的是求正整数阶的算法:
int fact(int i){
if(i<=1)return 1;
return fact(i-1)*i;
}
多数递归方法可以转换成非递归方法。
一般同功能的非递归方法,执行效率要优于递归方法。但合理的使用递归方法,可以使代码结构更清晰,更有可读性,从而更方便维护。
❹ java中递归算法是什么怎么算的
Java递归算法是基于Java语言实现的递归算法。递归算法是一种直接或者间接调用自身函数或者方法的算法。递归算法实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法表示问题的解。递归往往能给我们带来非常简洁非常直观的代码形式,从而使我们的编码大大简化,然而递归的思维确实跟我们的常规思维相逆的,通常都是从上而下的思维问题,而递归趋势从下往上的进行思维。
二、递归算法解决问题的特点:
【1】递归就是方法里调用自身。
【2】在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
【3】递归算法代码显得很简洁,但递归算法解题的运行效率较低。所以不提倡用递归设计程序。
【4】在递归调用的过程中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等,所以一般不提倡用递归算法设计程序。
【5】在做递归算法的时候,一定把握出口,也就是做递归算法必须要有一个明确的递归结束条件。这一点是非常重要的。其实这个出口就是一个条件,当满足了这个条件的时候我们就不再递归了。
三、代码示例:
代码执行流程图如下:
此程序中n=5就是程序的出口。
❺ JAVA中递归的概念
说简单点就是方法调用自身方法。给你个例子:
猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
public class MonkeyPeach {
public static void main(String[] args) {
System.out.println("第一天的桃子数:"+getPeach_Num(10, 1));
}
// 利用递归的方法来求第一天的桃子数,输入参数为天数和当天的桃子数,输出为第一天桃子数
public static int getPeach_Num(int day, int peach_num) {
if (day == 1)
return peach_num;
else if (day < 1 || peach_num < 0)
return 0;
else
return getPeach_Num(day - 1, (peach_num + 1) * 2);
}
}
❻ java中,递归什么方法怎么用
public static void main(String args[]) {
System.out.println(plus(3));
}
static int count = 0;
public static int plus(int i) {
if (i > 10) {
} else {
count = i + plus(i + 1);
}
//System.out.println(count);
return count;
}
这就是一个最简单的递归
❼ java中递归的作用是什么为什么要用到递归
递归做为一种算法在程序设计语言中广泛应用.是指函数/过程/子程序在运行过程中直接或间接调用自身而产生的重入现象.递归是计算机科学的一个重要概念,递归的方法是程序设计中有效的方法,采用递归编写程序能使程序变得简洁和清晰.。
给你个求阶乘的例子:
public long factorial(long n){//求n!
if(n==0)return 1;
else return n*factorial(n-1);//利用递归n!=n*(n-1)!直到0
}
比较经典的递归例子,汉诺塔:
public class T2010_7_9{
static int count=1;
public static void move(char j,char k){
System.out.println("第"+(T2010_7_9.count++)+"步:将一个盘子从柱子"+j+"拿到柱子"+k);
}
public static void hanoi(char a,char b,char c,int n){
if(n==1)move(a,c);
else{hanoi(a,c,b,n-1);
move(a,c);
hanoi(b,a,c,n-1);
}
}
public static void main(String[] args){
char a='A',b='B',c='C';
int num=3;//盘子的个数
hanoi(a,b,c,num);
}
}
❽ Java中的递归如何使用最好给出详细的例题
程序调用自身的编程技巧称为递归( recursion)。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。 注意: (1) 递归就是在过程或函数里调用自身; (2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
上面是递归的定义,我现在给你一个JAVA最简单的递归的我写的例子,你可以对照着看:
public class Test { public static void main(String[] args) { output(1); } private static void output(int n) { // TODO Auto-generated method stub System.out.println(n); if(n<100){ n++; output(n); } } }
❾ java中递归算法是什么怎么算的
一、递归算法基本思路:
Java递归算法是基于Java语言实现的递归算法。递归算法是一种直接或者间接调用自身函数或者方法的算法。递归算法实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法表示问题的解。递归往往能给我们带来非常简洁非常直观的代码形式,从而使我们的编码大大简化,然而递归的思维确实跟我们的常规思维相逆的,通常都是从上而下的思维问题,而递归趋势从下往上的进行思维。
二、递归算法解决问题的特点:
【1】递归就是方法里调用自身。
【2】在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
【3】递归算法代码显得很简洁,但递归算法解题的运行效率较低。所以不提倡用递归设计程序。
【4】在递归调用的过程中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等,所以一般不提倡用递归算法设计程序。
【5】在做递归算法的时候,一定把握出口,也就是做递归算法必须要有一个明确的递归结束条件。这一点是非常重要的。其实这个出口就是一个条件,当满足了这个条件的时候我们就不再递归了。
三、代码示例:
publicclassFactorial{
//thisisarecursivefunction
intfact(intn){
if(n==1)return1;
returnfact(n-1)*n;
}}
publicclassTestFactorial{publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
Factorialfactorial=newFactorial();
System.out.println("factorial(5)="+factorial.fact(5));
}
}
代码执行流程图如下:
此程序中n=5就是程序的出口。