矩阵快速幂,1001. Fibonacci 2求斐波那契第n项!毕竟数据量太大!http://soj.sysu.edu.cn/show_problem.php?pid=1001&cid=1740 1 #include 2 #include 3 4 using namespace std; 5 ...
分类:
其他好文 时间:
2015-04-02 15:01:25
阅读次数:
148
反向计算:编写一个函数将一个整型转换为二进制形式反向计算问题,递归比循环更简单分析:需要理解,奇数的二进制最后一位是1,偶数的二进制最后一位一定是0,联想记忆,这个和整型的奇偶性是一致的,1本身就是奇数,0本身是偶数。十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2整除十进制...
分类:
其他好文 时间:
2015-04-02 01:13:35
阅读次数:
158
之前算斐波那契数列都是算前两个数相加实现的比如0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,463682=1+13=1+25=2+38=3+5……...
分类:
编程语言 时间:
2015-04-01 23:27:48
阅读次数:
223
以前看数据结构与算法分析(C语言描述),作者在讲述算法分析时提到递归计算斐波那契数列,
时间复杂度T(N) = T(N-1) + T(N-2);
作者说归纳法易证得T(N) >= Fib(N);而Fib(N) = (3/2)^(N)
这个地方作者处理得有些不太彻底,不是吗?翻来覆去没把Fib(N)准确求出,今天我翻看另一本资料,
更模糊了,它求得2^(N/2) < T(N) < 2^(N)就完事了。
不过今天我开窍了,T(N) = T(N-1) + T(N...
分类:
其他好文 时间:
2015-04-01 15:33:37
阅读次数:
172
斐波那契数列的递归实现:
public int fn(int n) {
if (n == 1 || n == 2)
return 1;
return fn(n-1)+fn(n-2);
}
非递归写法:
public int fn(int n) {
int a =1;
int b = 1;
int tmp;
if (n == 1 || n == 2)
return 1;
f...
分类:
编程语言 时间:
2015-04-01 15:26:53
阅读次数:
146
问题描述 斐波那契数列大家都非常熟悉。它的定义是: f(x) = 1 .... (x=1,2) f(x) = f(x-1) + f(x-2) .... (x>2) 对于给定的整数 n 和 m,我们希望求出: f(1) + f(2) + ... + f(n) 的值。但这个值可能非常大,所以我...
分类:
其他好文 时间:
2015-03-31 17:42:56
阅读次数:
304
//////UserecursivemethodtoimplementFibonacci/////////staticintFn(intn){if(n46memorywilloverflow}递归算法时间复杂度是O(n2), 空间复杂度也很高的。当然不是最优的。自然我们想到了非递归算法了。一般的实现...
许多教学书上都用斐波那契数列(数列中第一二个值都是1,其它任意一个数都是其前两项之和)作为讲解递归的例子,作为教学例子,它确实十分合适,但是如果用在实际计算中,那么递归实现的斐波那契数列求值实在是太满了,其中主要的原因是重复计算实在太多,这样的递归算法不仅速度效率低下,还容易造成栈溢出。如果能够保留下已经计算过的值,但需要时直接取用而不是重复计算,那么必然会提高程序性能。
对于斐波那契数列求解使...
分类:
编程语言 时间:
2015-03-29 08:21:04
阅读次数:
180
递归调用非递归调用
运行时间比较
结论
位运算与乘除法
结论递归调用/非递归调用我们都知道,很多算法,都是用递归实现的。当然它们同时也是可以用非递归来实现。一般我们在对二叉树进行遍历的时候,还有求斐波那契数的时候,递归是非常简单的。代码容易懂,好实现。但是递归的时候,有一个问题,就是需要压栈。为什么要压栈呢?因为当我在函数内部调用自身的时候,要中断当前的操作继续跳转到下一次的实现,而当前运行的状态要...
分类:
编程语言 时间:
2015-03-28 21:52:18
阅读次数:
229
n位不含前导零不含连续1的数共有fib(n)个,fib(n)为斐波那契数列。所以可以预处理一下fib的前缀和,查找一下第n个数是k位数,然后再递归计算它是第k位数里的多少位。举个例子,比如说要找第11个数,发现它是个5位数,所以最高位是个1,然后它还是5位数里的第4个数。这时要找第三个数了,因为后面...
分类:
其他好文 时间:
2015-03-28 14:12:18
阅读次数:
111