#include <iostream>
using namespace std;
//青蛙跳台阶 1次跳一个,或者一次跳2个,求第n阶台阶的跳法有多少种
//如果全是跳1个,则只有一种跳法
//如果最后一跳是跳1个,则求出f(n-1)的跳法即可
//如果最后一条是跳2个,则求出f(n-2)的跳发即可
//递归
int getKinds(int n)
{
int n_all = 0;
if (n == 1) return 1;
if (n == 2) return 2;
// n> 2 的情况
else
{
int n_1 = getKinds(n - 1);
int n_2 = getKinds(n - 2);
return n_1 + n_2;
}
}
//图形覆盖问题
//用8个2x1的矩形 覆盖 2x8的大矩形
//记大矩形f(8) 若最后一个竖着摆,则要求f(7)
// 若最后一个横着摆,则倒数第二个一定是横着摆,则求出f(6)即可
// f(8) = f(7)+ f(6)
int getTriangleKinds(int n)
{
int n_all = 0;
if (n == 1) return 1;
if (n == 2) return 2;
// n> 2 的情况
else
{
int n_1 = getKinds(n - 1);
int n_2 = getKinds(n - 2);
return n_1 + n_2;
}
}
int main()
{
int res = getKinds(3);
cout << res << endl;
system("pause");
return 0;
}