001    /*
002     DXN, May 18. 99: don't think host is needed in the next method in general.  The
003     lazy evaluator should carry all needed information to compute the next element in
004     the sequence, irrespective of what the host has.
005     */
006    package lrs.lazyLRSEvaluators;
007    
008    import lrs.*;
009    public class LazyFibEval extends ALazyEval
010    {
011        // f(n) = f(n-1) + f(n-2).
012        private int _fn1; // f(n-1)
013        private int _fn2; // f(n-2)
014        
015        public LazyFibEval (int fn2, int fn1)
016        {
017            _fn1 = fn1;
018            _fn2 = fn2;
019        }
020        
021        public LRStruct nextLRS()
022        {
023            int fn = _fn1 + _fn2;
024            _fn2 = _fn1;
025            _fn1 = fn;
026            return  makeLazyLRS (_fn2);
027        }
028        
029        /**
030         * @return 
031         */
032        public LRStruct makeLRS() // I want to be able to makeLazyLRS at any time.
033        {
034            LRStruct lrs = new LRStruct();
035            lrs.insertFront(_fn2);
036            lrs.setRest (nextLRS());
037            return lrs;
038        }
039    }
040