package com.test;
public class Demo3 {
/**
* @param 递归··
*/
public static void main(String[] args) {
System.out.println(recursiveSum(10));
System.out.println(recursiveFactorial(5));
System.out.println(recursiveFibonacci(6));//求费波纳茨数列第6项
System.out.println(fun(8));//求费波纳茨数列第8项---21
}
/**
* 求1+2+3+...+n的和
*/
public static int recursiveSum(int n){
if(n==1)
return 1;
/**
* n + (n-1)+recursiveSum(n-2)
* n + (n-1)+(n-2)+recursiveSum(n-3)
* ...
*/
return n+recursiveSum(n-1);
}
/**
* 求n!
*/
public static int recursiveFactorial(int n){
if(n==1)
return 1;
/**
* n * (n-1)*recursiveFactorial(n-2)
* n * (n-1)*(n-2)*recursiveFactorial(n-3)
* ...
*/
return n*recursiveFactorial(n-1);
}
/**
* 求费波纳茨数列 1 1 2 3 5 8...
*/
public static int recursiveFibonacci(int n){
if(n==1||n==2)
return 1;
/**
f6
f5 f4
f4 f3 f3 f2
f3 f2 f2 f1 f2 f1
f2 f1
*/
return recursiveFibonacci(n-1)+recursiveFibonacci(n-2);
}
/**
* 非递归求费波纳茨数列
*/
public static long fun(int n){
if(n==1||n==2){
return 1;
}
long f1 = 1l;
long f2 = 1l;
long result =0l;
for(int i=0;i<n-2;i++){
result = f1+f2;
f1 = f2;
f2 =result;
}
return result;
}
}