文章目录
前言
本文的目的是理解递归算法的原理,以及掌握简单的应用场景。
一、递归算法的原理
一个大问题可以分解成几个小问题,其中有的小问题可以直接实现,另一部分小问题与大问题的实现方式相同,从而进入循环,递归到最后会有一个直接实现方式,即递归出口。
二、递归算法的应用
1.利用递归求阶乘
- n的阶乘: n×(n-1)!
- n-1的阶乘:(n-1)×(n-2)!
- n-2的阶乘:(n-2)×(n-3)!
- ····
- 3的阶乘:3×2!
- 2的阶乘:2×1!
- 1的阶乘:1!
- 其中1!就是递归出口
代码如下:
 public static void main(String[] args) {
		
		int fac = getFac(5);
		System.out.println(fac);
	}
  public static int getFac(int n) {
		int fac = 1;
		if (n > 0) {
			if (n == 0 || n == 1) {
				return 1;
			} else {
				for (int i = 2; i <= n; i++) {
					fac = fac * i;
				}
			}
		}
		return fac;
	}2.利用递归求斐波那契数列的第N项的值
- 第n项 的值:第n-1项的值+第n-2项的值
- 第n-1项的值:第n-2项的值+第n-3项的值
- 第n-2项的值:第n-3项的值+第n-4项的值
- ······
- 第4项的值:2+1=3
- 第3项的值:1+1=2
- 第2项的值:1
- 第1项的值:1
- 其中第1项的值和第2项的值就是递归出口
代码如下:
 public static void main(String[] args) {
			
     int sum = getSum(6);
     System.out.println(sum);
	}
 public static int getSum(int n) {
		if(n==1 || n==0) {
			return 1;
		}else {
			int sum = getSum(n-1)+getSum(n-2);
			return sum;
		}
	}









