递归在解决某些问题的时候使得我们思考的方式得以简化,代码也更加精炼,容易阅读。那么既然递归有这么多的优点,我们是不是什么问题都要用递归来解决呢?难道递归就没有缺点吗?今天我们就来讨论一下递归的不足之处。谈到递归就不得不面对它的效率问题。为什么递归是低效的还是拿斐波那契(Fibonacci)数列来做例...
分类:
其他好文 时间:
2014-09-13 21:21:55
阅读次数:
617
这是一道变换了的斐波那契数列,但是你如果写成递归函数的话内存是不够的,因为n的范围很大,如果你把前20项打出来的话,你会发现规律:就是从2开始是yes,每隔4个就是yes,其余是no。按这个规律编程绝对没问题,但是我还是愿意在这里证明一下其正确性。
我们看前七项,并设为ai:
7 11 18 29 47 76 123
a1 a2 a3 a4 a5 a6 a7
易知a3和a7是能被3整除的,其实如果只知道a3能被3整除,就能推出a7也能被3整除:
a7 = ...
分类:
其他好文 时间:
2014-09-13 10:43:25
阅读次数:
227
目录 1、斐波那契数列(Fibonacci)介绍 2、朴素递归算法(Naive recursive algorithm) 3、朴素递归平方算法(Naive recursive squaring...
分类:
其他好文 时间:
2014-09-10 20:51:21
阅读次数:
602
现将前1000个的斐波那契数打表,然后再找就好了。
代码:
import java.util.Scanner;
import java.math.*;
public class Main{
public static void main(String[] args){
Scanner cin = new Scanner(System.in...
分类:
编程语言 时间:
2014-09-07 22:32:45
阅读次数:
284
#include
#include
#include
using namespace std;
long long fibRecursion(unsigned n) {
if(n = 2) {
return fibRecursion(n - 1) +...
分类:
其他好文 时间:
2014-09-06 14:54:03
阅读次数:
165
记得在我们最开始学习C语言的时候,每当讲到递归,无论是课本上,还是老师,都会给出两个经典例子的递归实现,其中一个就是阶乘,另外一个就是Fibonacci(中文多译成斐波那契)数列了。用递归方法计算阶乘的代码如下://递归计算阶乘long Factorial(int n){ if (n 1) { r....
分类:
其他好文 时间:
2014-09-05 23:46:32
阅读次数:
252
斐波那契数列教科书都有,而且基本都会出现在递归那一节。但是并不是说递归就是斐波那契的最好解法,而是因为它能更好的诠释什么是递归。但是真正的软件开发并不会使用此种方法。递归有其最大的好处就是简洁,将大的问题转化为小的问题。在宏观上很好理解。但是递归的效率也是很值得探讨的。递归需要系统自己本身不停的压栈,保存中间量和状态,而且调用函数也是需要时间和空间的。因此效率上就出现了问题。而且每个进程所开的栈的...
分类:
其他好文 时间:
2014-09-05 10:02:31
阅读次数:
197
思路: 从右上方开始,若小于 target, 则往下走;若大于 target, 对改行二分查找;若等 target, 返回 true.
思路: 斐波那契。此处用动归。 还可以使用矩阵二分乘。(剑指offer: 题9)
分类:
其他好文 时间:
2014-09-03 19:42:47
阅读次数:
249
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