今天研究了下Fibonacci算法,实现了递归和非递归两种方式得到指定第n个的值。 代码如下: 比较递归和非递归两种算法,发现递归算法效率较低,主要原因是递归会涉及到重复计算,可以通过缓存方式缓解,具体就是将计算的每项记录到一个map里,需要时直接get而不必重新计算,优化后代码如下: ...
分类:
编程语言 时间:
2017-05-25 01:24:58
阅读次数:
248
什么是递归?简单的说就是:函数自身调用自身。 “普通程序员用迭代,天才程序员用递归” 虽然递归 在运行时会不断出栈压栈,调用底层的寄存器,造成空间上的占用以及时间上的缓慢, 但在一些算法上面仍然是递归很实用 但需要注意的是: #递归是自己调用自己 很消耗时间,还会有消耗空间的危险,所以递归递归一定要 ...
分类:
编程语言 时间:
2017-05-23 23:43:14
阅读次数:
271
1978 Fibonacci数列 3 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 青铜 Bronze 题解 1978 Fibonacci数列 3 1978 Fibonacci数列 3 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 青铜 Bronze 时间限制: ...
分类:
其他好文 时间:
2017-05-20 12:14:44
阅读次数:
180
给出一个数字,用FIB数列各项加加减减来得到。 问最少要多少个(可以重复使用) 大概试了一下,fibonacci数列的增长是很快的,大概到了90+项就超过了题目范围…… 所以每次找一个最近的fibonacci数试一下就好,实测跑得飞快。 ...
分类:
其他好文 时间:
2017-05-20 10:12:18
阅读次数:
186
链接:http://poj.org/problem?id=3070 Fibonacci Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10796 Accepted: 7678 Description In the Fibonac ...
分类:
其他好文 时间:
2017-05-18 11:23:32
阅读次数:
175
HDU 1588 Gauss Fibonacci(矩阵高速幂+二分等比序列求和) ACM 题目地址:HDU 1588 Gauss Fibonacci 题意: g(i)=k*i+b;i为变量。 给出k,b,n,M,问( f(g(0)) + f(g(1)) + ... + f(g(n)) ) % M的值 ...
分类:
其他好文 时间:
2017-05-17 23:48:02
阅读次数:
248
#include <stdio.h>int factorial(int a); int Fibonacci(a);long Hanoi(a); void main(){ } 函数递归调用:函数本身调用自身。类似于循环。 注意:编写递归程序类似于循环语句需要注意条件,函数调用到什么时候为止,否则会出现 ...
分类:
编程语言 时间:
2017-05-16 20:46:01
阅读次数:
177
写了个函数作为装饰器为Fibonacci数列做缓存,做了一下性能比较。 [python] view plain copy #!/usr/bin/python # coding: UTF-8 import datetime now = datetime.datetime.now from functo ...
分类:
其他好文 时间:
2017-05-16 16:42:15
阅读次数:
112
一,列表生成式 ls = [i*i for i in range(10)]ls[0, 1, 4, 9, 16, 25, 36, 49, 64, 81] ge = (i*i for i in range(10)) #将[]改为()就是一个生成器ge<generator object <genexpr> ...
分类:
编程语言 时间:
2017-05-14 20:36:26
阅读次数:
295
1. 什么是斐波那契数? 这里我借用百度百科上的解释:斐波那契数,亦称之为斐波那契数列(意大利语: Successione di Fibonacci),又称黄金分割数列、费波那西数列、费波拿契数、费氏数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被 ...
分类:
编程语言 时间:
2017-05-13 21:03:44
阅读次数:
556