递归(recursion):简单来说就是在方法内部对自身进行调用。
递归求阶乘n!:
public
class Factorial {
public static void main(String[] args){
System.out.println(factorial(9));
}
//递归求阶乘n!
public static int factorial( int n){
if(n==1||n==0){
return 1;
} else{
return n*factorial(n-1);
}
}
}
public static void main(String[] args){
System.out.println(factorial(9));
}
//递归求阶乘n!
public static int factorial( int n){
if(n==1||n==0){
return 1;
} else{
return n*factorial(n-1);
}
}
}
递归求
Fibonacci
数列:
1
,
1
,
2
,
3
,
5
,
8...
第
9
个数的值。数列满足递推公式:
f(1)=1,f(2)=1 f(n)=f(n-1)+f(n-2)(n>2)
public
class Fibonacci {
public static void main(String[] args) {
System.out.println(fibonacci(9));
System.out.println(noRecursionFibonacci(9));
}
//递归求fibonacci的值
public static int fibonacci( int n){
if(n==1||n==2){
return 1;
} else{
return fibonacci(n-1)+fibonacci(n-2);
}
}
//非递归求fibonacci的值(迭代)
public static int noRecursionFibonacci( int n){
if(n==1||n==2){
return 1;
}
int f1 = 1;
int f2 = 1;
int f3 = 1;
for( int i=0;i<n-2;i++){
f3 = f2+f1;
f1=f2;
f2=f3;
}
return f3;
}
}
public static void main(String[] args) {
System.out.println(fibonacci(9));
System.out.println(noRecursionFibonacci(9));
}
//递归求fibonacci的值
public static int fibonacci( int n){
if(n==1||n==2){
return 1;
} else{
return fibonacci(n-1)+fibonacci(n-2);
}
}
//非递归求fibonacci的值(迭代)
public static int noRecursionFibonacci( int n){
if(n==1||n==2){
return 1;
}
int f1 = 1;
int f2 = 1;
int f3 = 1;
for( int i=0;i<n-2;i++){
f3 = f2+f1;
f1=f2;
f2=f3;
}
return f3;
}
}
本文转自 yzzh9 51CTO博客,原文链接:http://blog.51cto.com/java999/168085,如需转载请自行联系原作者