问题描述
小明要下十个台阶,可以一次下一个台阶,也可以一次下两个台阶,请问下完十个台阶,有几种下法?
解题思路
下到最后一次的话,可能还剩一个台阶,也可能还剩两个台阶,所以下十个台阶的方法为下八个台阶的方法数加上下九个台阶的方法数,即f(10)=f(8)+f(9)
而下八个台阶的话,同理可得,等于下七个台阶的方法数加上下六个台阶的方法数
…………
下两个台阶的话,有两种下法
下一个台阶的话,有一种下法
所以关键代码为:
int f(n)
{
if (n==1) return 1;
if (n==2) return 2;
else return f(n-1)+f(n-2);
}