关注递归数列
来源:互联网 发布:张松献图 知乎 编辑:程序博客网 时间:2024/05/21 09:50
递归的数列在多个题目中均有体现,其中出现最频繁的是费波纳茨数列!
而关于它的形式,各种各样。目前遇到的有以下几种:
1、楼梯问题
即每次上楼只能走一个或两个阶梯。然后询问走到第n个阶梯有多少种走法?
标准费波纳茨数列!
2、兔子问题
一只兔子2个月后会生小兔子,兔子都不会死去,问n个月后又多少兔子?
同理,兔子数列(费波纳茨数列)
3、路径问题
有格子如下
说从一个数开始,只能向右方向跳格子,问从a走到b所有方法?
从a开始,将a当作1,则走到b即为走到b-a+1。从a走到b-a之后,有一种方法走向b-a+1,如果走到b-a-1,则同样只有1条路径通往b-a+1,故从a走到b的方式
等于1走到b-a+1的方式等于f(b-a+1)=f(b-a-1)+f(b-a),又回到了费波纳茨数列。
4、堆骨牌的题目:
hd2046
在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数.
例如n=3时,为2× 3方格,骨牌的铺放方案有三种,如下图:
ac代码(费波纳茨):
#include <stdio.h>int main(void){ int n,i; long long int t,fb[2]; while(scanf("%d",&n)!=EOF) { fb[0]=1; fb[1]=1; for(i=1;i<n;i++) { t=fb[1]; fb[1]=fb[1]+fb[0]; fb[0]=t; } printf("%lld\n",fb[1]); } return 0;}
其次是其他递归的数组:
1、RPG难题
即有3种颜色要填n个空。相邻颜色不相同,首尾颜色不相同。
其实就是假设没有首尾颜色不相同这个条件,于是有3*2^(n-1),然后减去首尾颜色相等的,而首尾颜色相等时,倒数第二个和第一个的颜色必不相等。
而倒数第二个也当作倒数第一个来算,于是用递归可以得到结果。
来自hd2045题
ac答案:
#include <stdio.h>long long int no(int n);int main(void){ int n; while(scanf("%d",&n)!=EOF) { if(n==1) printf("%d\n",3); else printf("%lld\n",no(n)); } return 0;}long long int no(int n){ long long int sum; int i; for(i=2,sum=3;i<=n;i++) sum*=2; if(n>3) return sum-no(n-1); else return 6;}
2、
1 0
- 关注递归数列
- 递归数列
- 递归::斐波纳数列
- 递归数列(recursive sequence)
- 递归求斐波拉数列函数
- C++ 递归求斐波拉契数列
- 递归实现 Fibnacci数列
- 基础的递归数列
- 递归实现斐波拉契数列
- Fibonacci数列 递归实现
- 递归求Fibonacci数列
- 递归求Fibonacci数列
- 【SDOI2008】【BZOJ3231】递归数列
- Fibonacci数列-递归算法
- bzoj3231 [Sdoi2008]递归数列
- [BZOJ3231] [Sdoi2008]递归数列
- 递归解决非布拉茨数列
- luogu2461递归数列
- MATLAB中的impixel函数——获取图像像素值
- 2016年11月8日晚21时16分,首次使用博客,仅记
- React
- Linux TCP协议使用线程实现并发服务器
- POJ 1061 青蛙的约会
- 关注递归数列
- 编程规范
- Qt小总结
- java构造方法、成员变量、方法所对应的反射实例
- c++參考手冊
- 编译原理(5)-----2型文法和下推自动机
- 基于形态学操作提取水平和垂直线条(五线谱中音符和乐谱线的分离)
- 绝对值排序
- PAT 乙级 1011