关于递归

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;
		
	}

}

你可能感兴趣的:(关于递归)