WXME0103 wxtextwxtabwxmediawximagedrscheme:sepatator-snip%drscheme:prompt-snip%drscheme:equal-snip%drscheme:unit:snip%"drscheme:vertical-separator-snip%wxbad HTML Bulletwxloc'K ZZZZ€ÿ€ÿ€ÿ StandardK-adobe-courier ZZZZ€ÿ€ÿ€ÿF?ð\ZZZ?ð?ð?ð?ð?ð?ðmzprizm:syntaxF?ð\ZZZ?ð?ð?ð?ð?ð?ðF?ðZZZZ?ð?ð?ð€ÿmzprizm:primitiveF?ðZZZZ?ð?ð?ð€ÿmzprizm:constantF?ðZZZZ?ð?ð?ð€ÿF?ðZZZZ?ð?ð?ðdmzprizm:bound variableF?ðZZZZ?ð?ð?ðdF?ðZZZZ?ð?ð?ð€ÿmzprizm:unbound variableF?ðZZZZ?ð?ð?ð€ÿG?ðZZZZ?ð?ð?ð?ð?ð?ðF?ðZZZZ?ð?ð?ð€ÿG?ðZZZZ?ð?ð?ð€ÿG?ðZZZZ?ð?ð?ð€ÿF?ð\ZZZ?ð?ð?ð€–€–F?ðZZZZ?ð?ð?ð€–F?ð\ZZZ?ð?ð?ð€–F?ðZZ^Z?ð?ð?ð€ÿK ZZZZ€ÿ€ÿ€ÿK-adobe-courier ZZZZ€ÿ€ÿ€ÿF?ð\ZZZ?ð?ð?ð?ð?ð?ðF?ðZZZZ?ð?ð?ð€ÿF?ðZZZZ?ð?ð?ðdF?ðZZZZ?ð?ð?ð€ÿG?ðZZZZ?ð?ð?ð?ð?ð?ðF?ðZZZZ?ð?ð?ð€ÿG?ðZZZZ?ð?ð?ð€ÿG?ðZZZZ?ð?ð?ð€ÿF?ðZZZZ?ð?ð?ð€–F?ð\ZZZ?ð?ð?ð€–€–F?ð\ZZZ?ð?ð?ð€–F?ðZZ^Z?ð?ð?ð€ÿF?ðZZ^Z?ð?ð?ð€ÿF?ðZZZZ?ð?ð?ð?ð?ð?ðG?ð\ZZZ?ð?ð?ðG?ðZZZZ?ð?ð?ðF?ðZZ^Z?ð?ð?ð€ÿ€Ú  ¿ð¿ð¿ð¿ð StandardF?ðZZZZ?ð?ð?ð?ð?ð?ðK ZZZZ€ÿ€ÿ€ÿK-adobe-courier ZZZZ€ÿ€ÿ€ÿF?ð\ZZZ?ð?ð?ð?ð?ð?ðmzprizm:syntaxF?ð\ZZZ?ð?ð?ð?ð?ð?ðF?ðZZZZ?ð?ð?ð€ÿmzprizm:primitiveF?ðZZZZ?ð?ð?ð€ÿmzprizm:constantF?ðZZZZ?ð?ð?ð€ÿF?ðZZZZ?ð?ð?ðdmzprizm:bound variableF?ðZZZZ?ð?ð?ðdF?ðZZZZ?ð?ð?ð€ÿmzprizm:unbound variableF?ðZZZZ?ð?ð?ð€ÿG?ðZZZZ?ð?ð?ð?ð?ð?ðF?ðZZZZ?ð?ð?ð€ÿG?ðZZZZ?ð?ð?ð€ÿG?ðZZZZ?ð?ð?ð€ÿF?ð\ZZZ?ð?ð?ð€–€–F?ðZZZZ?ð?ð?ð€–F?ð\ZZZ?ð?ð?ð€–F?ðZZ^Z?ð?ð?ð€ÿF?ðZZ^Z?ð?ð?ð€ÿF?ðZZZZ?ð?ð?ð?ð?ð?ðG?ð\ZZZ?ð?ð?ðG?ðZZZZ?ð?ð?ð ; Author: Jiel Beaumadier, 2002. ; jiel@linuxmail.org 5; made in scheme language with DrScheme 103p1, Linux. €€; with DrScheme you just have to click on "Execute" button (green arrow) and it runs in the interactions window (at the bottom).  E;Iterative recursive function (best and fastest version with scheme) ;An easy code:   ;(define fact ; (lambda (n) ; (local ((define fact-aux "; (lambda (k memoire) ; (if (= k n) "; (* k memoire) 4; (fact-aux (+ k 1) (* memoire k) $; ))))) ; (if (zero? n)   ; 1 ; (fact-aux 1 1) ;))))   ;-------------------------------   {define onsite?  (lambda (n)  (or  (= n 0)  (= n 10)  (= n 20)  (= n 50)  (= n 100)  (= n 200)  (= n 500)  (= n 1000)  (= n 2000)  (= n 5000)  (= n 10000)  (= n 20000)  (= n 50000)  (= n 100000)  (= n 150000)  (= n 200000)  (= n 500000)  (= n 1000000)  (= n 2000000)))}        {define fact  (lambda (n) # (local ((define fact-aux & (lambda (k memory) ! (if (= n k) & (* memory k) < (fact-aux (+ k 1) (* k memory))))) 8 (define res (cond [(< n 0) 'infinite] 0 [(= n 0) 1] = [else (fact-aux 1 1)] )) - (define length (if (> n 0) I (string-length (number->string res)) 1 'infinite))) 1 {cond    + [(and (< n 2001) (onsite? n))  (begin (newline) A (display "This calculation is available on http://factorielle.free.fr/")  (newline)  (newline) C (printf "~a! = ~a (~a figures)" n res length)  (newline) " (newline) )]   1 [(and (not (< n 2001)) (onsite? n))  (begin (newline) A (display "This calculation is available on http://factorielle.free.fr/")  (newline) & (factorielle) )]    [(not (< n 2001))  (begin (newline) I (display "This program make calculations of n! with  n<=2000")  (newline)  (newline) & (factorielle) )]     [else  (begin (newline) E (printf "~a! = ~a (~a figure(s))" n res length)  (newline) " (newline) )]  }  ))}    {define factorielle  (lambda ()  (begin  (newline) ? (display "You want to calculate n! for n (n:INTEGER) = ")  (let* ((n (read)))  (begin  (fact n)  )) = (begin (display "Another calculation? y/n ") (newline))  (if (equal? (read) 'y)  (factorielle)  (begin  (newline) M (display "2002 - Jiel Beaumadier & Matej Hausenblas - students in EUSTL (University of Sciences and Technologies of Lille - France) ")))  ))}   (factorielle)