关于递归

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

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值