许多教学书上都用斐波那契数列(数列中第一二个值都是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
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication1{ class...
分类:
其他好文 时间:
2015-03-20 18:00:15
阅读次数:
125
像刘汝佳书上说的,斐波那契数有一个叫尾数循环的性质:个位数是一个60步的循环,最后两位数是一个300步的循环。。。但是不会超过n^2;感兴趣的朋友可以查一查。
所以问题就变成了求a^b这个超大的数mod n等于多少,也就是所谓的幂取模利用递归,将大数分解取模;
但是要注意,0对任何数取模都是0,任何数对1取模都是0;
#include
using namespace std;
typedef...
分类:
其他好文 时间:
2015-03-19 22:14:45
阅读次数:
142
一、题目描述
1、古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... ,该题其实就是斐波那契数列的一种。
2、判断m-n之间有多少个素数,并输出所有素数。
程序分析:判断素数的方法:用一个数n分别去除2到sqrt(n),这里是...
分类:
编程语言 时间:
2015-03-19 16:24:11
阅读次数:
273
2015-3-19 时限3天斐波那契数列指的是这样一个数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …这个数列从第三项开始,每一项都等于前两项之和。有很多问题都是斐波那契数列的变形斐波那契数列的原型是来自兔子繁殖问题,在此之前我们先来看看跳台阶的问题跳台...
分类:
其他好文 时间:
2015-03-18 15:50:34
阅读次数:
182
acm.pdsu.edu.cn欢迎大家多做题...
分类:
其他好文 时间:
2015-03-17 23:47:30
阅读次数:
204
Problem Description
M斐波那契数列F[n]是一种整数数列,它的定义如下:
F[0] = a
F[1] = b
F[n] = F[n-1] * F[n-2] ( n > 1 )
现在给出a, b, n,你能求出F[n]的值吗?
Input
输入包含多组测试数据;
每组数据占一行,包含3个整数a, b, n( 0
...
分类:
其他好文 时间:
2015-03-17 23:38:47
阅读次数:
199
/* 斐波那契数列的简单应用,用矩阵乘法可以做到log(n)的时间复杂度 但这里返回的类型是int所以用普通的递推就行了F(n) = F(n-1)+F(n-2),F(1) = F(2) = 1;*/class Solution {public: int climbStairs(i...
分类:
其他好文 时间:
2015-03-17 21:41:51
阅读次数:
125