1
(define key
  (lambda (w)
    (reverse w)
    (if (null? w)
     0
    (let ((k 33))
         (+ (* (ctv(car w)) k) (key (cdr w)))
))))

これと同じものを出力します:

(define key
  (lambda (w)
    (if (null? w)
     0
    (let ((k 33))
         (+ (* (ctv(car w)) k) (key (cdr w)))
))))

私の単語が反転されてから計算されないのはなぜですか?

入力: (キー '(xyz))

出力: 2475 (両方の方法で)

なぜこれが起こるのかわかりません。なぜこれが起こっているのか、誰か助けてください。

4

3 に答える 3

2

reverseその場で逆にするのではなく、逆にしたリストを返すだけです。あなたがする必要があります

(let ((w (reverse w)))
  ...)

あなたが望む効果を得るために。

于 2013-04-17T01:26:15.240 に答える