一.寻找递归要素:
1.明确自己设定的函数要做什么;
2.寻找递归结束的条件;
3.确定关系等价式;
例题:
G (vjudge.net)https://vjudge.net/contest/520346/problemPrint/G首先我们可以发现当n<4的时候,n为多少方案就为多少;所以n<4作为一个出口;
当n>=4时,我们这样考虑:当第一个铺的是竖直的骨牌,那么接下来还剩有n-1个骨牌,就有n-1个结果;反之,当第一个铺的是平放的骨牌,那么肯定还要有一个平放的骨牌一起搭配,所以刚开始需要两个骨牌,那么接下来还剩有n-2个骨牌,有n-2个结果;总的来说:f(n-1)+f(n-2);
所以代码如下:
其中可以开数组优化!!而且记得数据过大时要用long long!!
并且多组数据输入时,可以用while(cin>>n){.....}
/
也可以用递归算杨辉三角在那个位置的值:
这个代码还有待优化。。
///
青蛙跳台阶,斐波那契数列同样可以;
那么我们可以分青蛙跳台阶为两部分,第一部分是跳了1;第二部分是跳了2;
当跳了1时,还剩下n-1个台阶,当跳了2,还剩n-2个台阶,所以总的跳台阶方案就是f(n-1)+f(n-2)
所以说递归问题找关系等价式可以分类讨论(即分情况讨论);