package com.itjob.algorithm;

public class Recursive {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int num = factorial(6);
		System.out.println(num);
		
		num = fibonacci(2);
		System.out.println(num);
		
		num = fibonacci(4);
		System.out.println(num);
	}

	/**
	 * 阶乘算法
	 * @param n
	 * @return
	 */
	static int factorial(int n) {
		// 基本条件
		if (n <= 1) {
			return 1;
		} else {
			// 递归步，执行n-1次
			return n * factorial(n - 1);
		}
	}

	/**
	 * 斐波纳契递归算法
	 * @param n
	 * @return
	 */
	static int fibonacci(int n) {
		// 基本条件
		if (n <= 2) {
			return 1;
		} else {
			// 递归步，执行n-2次
			return fibonacci(n - 1) + fibonacci(n - 2);
		}
	}
}
