Re: iterative-version for computing a Fibonacci number

Liste des GroupesRevenir à cl lisp 
Sujet : Re: iterative-version for computing a Fibonacci number
De : Nobody447095 (at) *nospam* here-nor-there.org (B. Pym)
Groupes : comp.lang.lisp comp.lang.scheme
Date : 26. Jun 2025, 02:56:40
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <103i9cl$37hl9$1@dont-email.me>
References : 1
User-Agent : XanaNews/1.18.1.6
B. Pym wrote:

Raffael Cavallaro wrote:
 
Hi, perhaps someone can help me translate my Python version?
 
(defun fib (x)
  (do ((a 0 b) ;; do loop variable a is initially 0, then b
       (b 1 (+ a b)) ;;loop variable b is initially 1 then a + b
       (i 1 (1+ i))) ;;loop index incremented by 1 each go round
      ((> i x) a))) ;;termination condition - when index passes x stop
                     ;; and return a
 
(defun fib-evens (limit)
  "find the sum of all the even fibonacci numbers less than 1 million"
  (loop for i from 1   ;;loop index starts at 1 implicitly incremented by 1
     as current = (fib i) ;;compute fib of the current index
     while (< current limit) ;;stop if index exceeds limit
     when (evenp current) sum current)) ;;sum all the even fibs and
return this sum
 
CL-USER> (time (fib-evens 1000000)) ;; time the sum of all the even
fibs less than a million
Evaluation took:
  0.0 seconds of real time
  8.e-6 seconds of user run time ;;; took about one
onehundredthousandth of a second
  1.e-6 seconds of system run time
  0 page faults and
  0 bytes consed.
1089154  ;; here's your answer

It seems that in CL (COBOL-Like), one has to use a macro whose
source measures more than 60 kilobytes.

In a Lispy language, one can program a much shorter solution by
simply using recursion.

Gauche Scheme

(define (sum-even-fibs limit)
  (let go ((a 0) (b 1))
    (if (>= b limit)
      0
      (+ (if (even? b) b 0) (go b (+ a b))))))

(sum-even-fibs 999999)
  ===>
1089154




Date Sujet#  Auteur
5 Sep 24 * Re: iterative-version for computing a Fibonacci number2B. Pym
26 Jun 25 `- Re: iterative-version for computing a Fibonacci number1B. Pym

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal