交替递归解fibs数列(线性复杂度)
来源:互联网 发布:java cp 命令参数 编辑:程序博客网 时间:2024/05/16 07:07
交替递归解fibs数列(线性复杂度)
(defun fibs_help (lst)
(cons (cons (+ (caar lst)
(cadar lst))
(list (caar lst)))
(list (car lst))))
(defun fibs (labelA labelB)
(if (eq labelB 1)
'((1 1) (1 0))
(fibs_help
(fibs labelB
(1- labelB)))))
(defun value (lst)
(caar lst))
(defun fibsex (n)
(if (eq n 1)
1
(if (eq n 2)
1
(+ (fibsex (- n 1))
(fibsex (- n 2))))))
(defun test (n)
(if (> n 1)
(progn
(print (value (fibs n (1- n))))
(print 'compare)
(print (fibsex n))
(test (- n 1)))
(print 'over)))
[42]> (test 15)
610
COMPARE
610
377
COMPARE
377
233
COMPARE
233
144
COMPARE
144
89
COMPARE
89
55
COMPARE
55
34
COMPARE
34
21
COMPARE
21
13
COMPARE
13
8
COMPARE
8
5
COMPARE
5
3
COMPARE
3
2
COMPARE
2
1
COMPARE
1
OVER
OVER
可以看到两者的结果是一样的,在做压力测试的时候比如40的时候,改进方法能很快出结果,而原来的需要很长很长的时间;
(defun fibs_help (lst)
(cons (cons (+ (caar lst)
(cadar lst))
(list (caar lst)))
(list (car lst))))
(defun fibs (labelA labelB)
(if (eq labelB 1)
'((1 1) (1 0))
(fibs_help
(fibs labelB
(1- labelB)))))
(defun value (lst)
(caar lst))
(defun fibsex (n)
(if (eq n 1)
1
(if (eq n 2)
1
(+ (fibsex (- n 1))
(fibsex (- n 2))))))
(defun test (n)
(if (> n 1)
(progn
(print (value (fibs n (1- n))))
(print 'compare)
(print (fibsex n))
(test (- n 1)))
(print 'over)))
[42]> (test 15)
610
COMPARE
610
377
COMPARE
377
233
COMPARE
233
144
COMPARE
144
89
COMPARE
89
55
COMPARE
55
34
COMPARE
34
21
COMPARE
21
13
COMPARE
13
8
COMPARE
8
5
COMPARE
5
3
COMPARE
3
2
COMPARE
2
1
COMPARE
1
OVER
OVER
可以看到两者的结果是一样的,在做压力测试的时候比如40的时候,改进方法能很快出结果,而原来的需要很长很长的时间;
- 交替递归解fibs数列(线性复杂度)
- FIBS数列和
- FIBS数列的差分测试
- fibs数列的母函数解法
- FIBS数列与连分式的推理
- 母函数性质的检验(fibs数列)
- HDU_How Many Fibs求数列区间数目
- 二分查找算法,斐波那契数列的递归及非递归。(分析时间复杂度及空间复杂度)
- 斐波那契数列的递归与非递归算法实现及其时间复杂度
- 斐波那契数列递归算法和非递归算法以及其时间复杂度分析
- 求一个整型数组的最大和的子数列,要求时间复杂度为线性的
- 递归数列
- 解递归式(分析递归式的算法复杂度)
- FIBS数列的新解法(不需要开平方)
- 线性筛选时间复杂度
- 线性排序复杂度比较
- 线性时间复杂度排序
- 求数列的最大子段和的两种方法(包括时间复杂度为线性时间的算法)
- inittab 百度百科
- su 与 sudo
- HTTP常见错误代码列表汇总及解决方案
- opencv1.0版本摄像头驱动不兼容问题的解决方法
- 页面的一些小技巧
- 交替递归解fibs数列(线性复杂度)
- Linux中/sbin/init程序的执行过程
- 战斗系统
- android animation's overview
- BuildForge获取Linux shell命令执行的返回值
- 任务系统
- 利用Xapian构建自己的搜索引擎:前言
- 深入了解Linux的守护进程(daemons)
- 利用Xapian构建自己的搜索引擎:Xapian简介