1

コードを実行しようとすると、このエラーが発生し続けます。

(let ((exp lambda (x y) (if (= y 1) x (* (exp x (- y 1)) x)))))

エラー:

let: bad syntax in: (let ((exp lambda (x y) (if (= y 1) x (* (exp x (- y 1)) x)))))

私の関数は再帰的な累乗を定義することになっていますが、let に問題があります。

4

1 に答える 1

7

の前に左括弧がなくlambdaletフォームに本文がありません。letまた、再帰関数の定義には使用できません。letrec(Scheme の場合) またはlabels(Common Lisp の場合)を使用する必要があります。おそらくあなたはこれを意味しました(スキーム):

(letrec ((exp (lambda (x y)
                (if (= y 1) x
                    (* (exp x (- y 1)) x)))))
  exp)
于 2012-09-20T03:27:09.327 に答える