カウンター

ホントにまだまだ基本的なところですが、少しでもわかってくるとなかなかSchemeも面白いですね。

(define (factorial x)
  (if (> x 0)
    (* x (factorial (- x 1)))
    1))

(define (log-factorial x) (log (factorial x)))
 
(define (count-down f x)
   (if (> x 0)
     (begin
       (display (f x))
       (newline)
       (count-down f (- x 1)))
     1))

(count-down factorial 10)
3628800
362880 
40320  
5040   
720    
120    
24     
6      
2      
1      
1

(count-down log-factorial 10)
15.1044125730755
12.8018274800815
10.6046029027453
8.52516136106541
6.5792512120101
4.78749174278205
3.17805383034795
1.79175946922805
0.693147180559945
0.0
1

(count-down (lambda (x) (* x x)) 10)
100
81
64
49
36
25
16
9
4
1
1

うーん。楽しい。そろそろ寝ないと…。