递归的应用
1. 什么是递归
递归是一种方法调用自己的编程技术。
例:
public class Recusion {
public static void main(String[] args){
//test();
test2(100);
}
//例一
public static void test(){
System.out.println("Hello World!");
test();
}
//例二
public static void test2(int n){
if(n==0){
return;
}
System.out.println(n);
test2(n-1);
}
}
2. 三角数字
该数列中的第n项是由第n-1项加n得到的。
三角数字
public class Triangle {
//方法一:循环
public static int getNumber(int n){
int total=0;
while(n>0){
total=total+n;
n--;
}
return total;
}
//方法二:递归
public static int getNumberByRecursion(int n){
if(n==1){
return 1;
}else{
return n+getNumberByRecursion(n-1);
}
}
}
测试:
public class TestTriangle {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(Triangle.getNumber(400));
System.out.println(Triangle.getNumberByRecursion(400));
}
}
3. Fibonacci数列
该数列的第1项为0,第二项为1,第n项由第n-1项加上第n-2项得到。
Fibonacci数列
public class Fibonacci {
public static int getNumber(int n){
if(n==1){
return 0;
}else if(n==2){
return 1;
}else{
return getNumber(n-1)+getNumber(n-2);
}
}
}
测试:
public class TestFibonacci {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(Fibonacci.getNumber(20));
}
}