记得在我们最开始学习C语言的时候,每当讲到递归,无论是课本上,还是老师,都会给出两个经典例子的递归实现,其中一个就是阶乘,另外一个就是Fibonacci(中文多译成斐波那契)数列了。用递归方法计算阶乘的代码如下://递归计算阶乘long Factorial(int n){ if (n 1) { r....
分类:
其他好文 时间:
2014-09-05 23:46:32
阅读次数:
252
斐波那契数列教科书都有,而且基本都会出现在递归那一节。但是并不是说递归就是斐波那契的最好解法,而是因为它能更好的诠释什么是递归。但是真正的软件开发并不会使用此种方法。递归有其最大的好处就是简洁,将大的问题转化为小的问题。在宏观上很好理解。但是递归的效率也是很值得探讨的。递归需要系统自己本身不停的压栈,保存中间量和状态,而且调用函数也是需要时间和空间的。因此效率上就出现了问题。而且每个进程所开的栈的...
分类:
其他好文 时间:
2014-09-05 10:02:31
阅读次数:
197
Fibonacci数列及其相关的数学问题,如何判断一个数是否是斐波那契数列...
分类:
其他好文 时间:
2014-09-03 16:51:36
阅读次数:
289
题目:求第n个Fib数与2^m的模。
分析:分治,快速幂。
具体参照本人的 斐波那契数列(http://blog.csdn.net/mobius_strip/article/details/8222309)
中 4.Fib的计算3:分治法;
设Jn为第n个月有生育能力的兔子数量,An为这一月份的兔子数量。得到如下递推矩...
分类:
其他好文 时间:
2014-09-03 13:13:16
阅读次数:
220
题目链接
题意:斐波那契数列,当长度大于8时,要输出前四位和后四位
思路:后四位很简单,矩阵快速幂取模,难度在于前四位的求解。
已知斐波那契数列的通项公式:f(n) = (1 / sqrt(5)) * (((1 + sqrt(5)) / 2) ^ n - ((1 + sqrt(5)) / 2) ^ n),当n >= 40时((1 + sqrt(5)) / 2) ^ n近...
分类:
其他好文 时间:
2014-08-30 15:11:21
阅读次数:
288
#include #include using namespace std;long long fibs1(int in_iN) { if(in_iN > in_iN; return 0;}
分类:
其他好文 时间:
2014-08-30 15:00:29
阅读次数:
300
顺推的例子 上过大学的应该都知道著名的“斐波那契”数列吧,说的是繁殖兔子的问题,题目我就大概说一下。如果1对兔子每月能生1对小兔子,而每对小兔在它出生后的第3个月就可以生1对小兔子,如果从1对初生的小兔子开始,1年后能繁殖多少兔子?思路:其实这个问题我们可以将兔子划分为“1月大的兔子“,”2月...
分类:
其他好文 时间:
2014-08-30 11:08:59
阅读次数:
220
问题描述:一个台阶总共有n阶,一次可以跳1级或者2级。求总共有多少种跳法。分析:用f(n)表示n阶台阶总共有多少种跳法。n阶台阶,第一可以选择跳1阶或者2阶,则f(n) = f(n-1) + f(n-2)。问题转化为斐波那契数列问题。/ 1 n=1f(n)= 2n=2\f(n-1)+(f-2)n>2
分类:
其他好文 时间:
2014-08-28 22:24:36
阅读次数:
232
题目链接
题意:求第n个斐波那契数的递归次数MOD b
思路:用矩阵快速幂求斐波那契数列,然后打表找出递归次数的规律为f(n) = 2 * F(n) - 1(F(n)为斐波那契数)。
代码:
#include
#include
#include
#include
#include
typedef long long ll;
using namespace...
分类:
其他好文 时间:
2014-08-28 21:14:46
阅读次数:
270
题目链接
题意:给出n和m,求出f(n) % m, f(x)为斐波那契数列。
思路:因为n挺大的,如果直接利用公式计算很有可能会TLE,所以利用矩阵快速幂求解,|(1, 1), (1, 0)| * |f(n - 1), f(n - 2)| = |f(n), f(n - 1)|,所以求f(n)相当于|f(1), f(0)|乘上n - 1次的|(1, 1), (1, 0)|。
...
分类:
其他好文 时间:
2014-08-28 16:57:40
阅读次数:
187