Java递归
1 什么是Java递归
Java中的递归是一个过程,其中方法连续不断地调用自身。Java中调用自身的方法称为递归方法。
它可以使代码紧凑且易于理解。
2 Java递归的语法
returntype methodname(){
//方法体
methodname();//调用当前方法
}
3 Java递归的例子1
package com.yiidian;
/**
* 一点教程网: http://www.yiidian.com
*/
public class Demo {
static void p(){
System.out.println("hello");
p();
}
public static void main(String[] args) {
p();
}
}
输出结果为:
hello
hello
hello
hello
hello
...
Exception in thread "main" java.lang.StackOverflowError
4 Java递归的例子2
package com.yiidian;
/**
* 一点教程网: http://www.yiidian.com
*/
public class Demo {
static int count=0;
static void p(){
count++;
if(count<=5){
System.out.println("hello "+count);
p();
}
}
public static void main(String[] args) {
p();
}
}
输出结果为:
hello 1
hello 2
hello 3
hello 4
hello 5
5 Java递归的例子3
package com.yiidian;
/**
* 一点教程网: http://www.yiidian.com
*/
public class Demo {
static int factorial(int n){
if (n == 1)
return 1;
else
return(n * factorial(n-1));
}
public static void main(String[] args) {
System.out.println("Factorial of 5 is: "+factorial(5));
}
}
输出结果为:
Factorial of 5 is: 120
上面程序的运行过程分析:
factorial(5)
factorial(4)
factorial(3)
factorial(2)
factorial(1)
return 1
return 2*1 = 2
return 3*2 = 6
return 4*6 = 24
return 5*24 = 120
6 Java递归的例子4
package com.yiidian;
/**
* 一点教程网: http://www.yiidian.com
*/
public class Demo {
static int n1=0,n2=1,n3=0;
static void printFibo(int count){
if(count>0){
n3 = n1 + n2;
n1 = n2;
n2 = n3;
System.out.print(" "+n3);
printFibo(count-1);
}
}
public static void main(String[] args) {
int count=15;
System.out.print(n1+" "+n2);//打印0 和 1
printFibo(count-2);//n-2,因为已经打印了2个数字
}
}
输出结果为:
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377
热门文章
优秀文章