交替递归解fibs数列(线性复杂度)

本文介绍了使用交替递归方法解决Fibs数列问题的算法,该方法具有线性复杂度,适用于进行压力测试。通过比较改进方法与传统方法在不同数据规模下的性能,展示其在效率上的优势。
交替递归解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的时候,改进方法能很快出结果,而原来的需要很长很长的时间;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值