パスワードを忘れた? アカウント作成
508065 journal

t-nissieの日記: Schemeb自習帳002 2

日記 by t-nissie
(define (wa x)
  (if (null? x)
    0
    (+ (car x) (wa (cdr x)))))

(wa ())        ;=>0
(wa '())       ;=>0
(wa '(4))      ;=>4
(wa '(1 5 10)) ;=>16
(wa '(0.5 0.1000000000000001 0.1)) ;=>0.7000000000000002

引数が '(1 5 10) みたいなリストでないとダメだし、加算の順序が逆。
前回の課題未達成。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • アドバイスしない方がいいんだよね?

    • なんでも再帰 http://www.shiro.dreamhost.com/scheme/docs/tailcall-j.html を参考に
      (define (wa . args)
        (define (loop sum args)
          (if (null? args)
          sum
          (loop (+ sum (car args)) (cdr args))))
        (loop 0 args))
      としてみました。いちおう動いているみたいですがこれでよいのでしょうか。
      アドバイスが必要な事態になりましたら叫び声をあげますので、
      気がつかれたら、そのときはどうかよろしくおねがいします。
      --
      love && peace && free_software
      t-nissie
      親コメント
typodupeerror

アレゲは一日にしてならず -- アレゲ見習い

読み込み中...