(define -ayalog '())

括弧に魅せられて道を外した名前のないプログラマ

fact関数を暇だったので書いてみた。(本当は暇じゃない)

全然暇じゃないです。正直気晴らしに少し考え事しながら書いてました。

以下は僕が書いたコード

(define (sub1 x)
  (- x 1))

(define (fact x)
  (cond
   ((zero? x) 1)
   (else
    (* x (sub1 x)))))

こっちはもうひとつのScheme入門から

(define (fact n)
  (if (= n 1)
      1
      (* n (fact (- n 1)))))

まぁ書き終わった後に見比べて思った。
間違ってる??0判定した後に1かけたら結果変わるじゃん!!
まぁzero?のとこを1判定するだけでいいんですけどもね!!
後、僕の場合Scheme入門の影響を受けすぎてifよりcondをどうしても使いたがる病にかかっているようで、まぁ個人的にはとても読みやすいけどどうしたものか。

べき乗書いて遊ぶなど。

(define (expo x y)
  (cond
   ((zero? y) 1)
   (else
    (* x (expo x (sub1 y))))))

もっと難しいコード沢山書けるようにならないとな…。
けど、物理の公式とか数学の公式とか結構簡単に書けると思うからトライしようとも思う。


Scheme手習い

Scheme手習い