/**
* 案例2 分治算法 走楼梯
* 一个台阶总共有n级,如果一次可以走1级,也可以一次走2级,求总共有多少种走法。
* 分析:
* 如果只有1级台阶,则只有一种走法,如果有2级台阶,则有2种走法:一次走1级或一次走2级
* 假设有三级台阶,则可以一次走1级或一次走2级,如果一次走1级则还剩2级台阶,产生2种走法(上面已经说了),
* 一次走2级则还剩1级只有一种走法,总共的走法就是2+1=3.
* 3
* /\
*剩余级数 2 1
* 走法 2 + 1 = 3
* 由此可见,n>2时,走法数就是第一次走1级后剩余级数的走法数+第一次走2级后剩余级数的走法数,这正是递归
*可以归纳出公式:
* f(n) = 1 n=1
* = 2 n=2
* =f(n-1) + f(n-2) n>2
* 观察公式可发现,这其实是斐波那契数列!
*
* **/
public class zoulouti {
public static void main(String[] args){
int res = solution(3);
System.out.println(res);
}
static int solution(int n){
if (n==1) return 1;
if (n==2) return 2;
return solution(n-1) + solution(n-2);
}
}