私はこのようなLisp関数を書いた:Lispの関数呼び出しエラー
(defun power (base exponent)
(if (= exponent 0)
1
(* base (power (- exponent 1)))))
私はそれを呼び出すようにしようとすると、しかし、私は若干の誤差が出る:
CL-USER 2 > (power 2 3)
Error: POWER got 1 arg, wanted at least 2.
1 (abort) Return to level 0.
2 Return to top loop level 0.
Type :b for backtrace or :c <option number> to proceed.
Type :bug-form "<subject>" for a bug report template or :? for other options.
CL-USER 3 : 1 > (power 2)
Error: POWER got 1 arg, wanted at least 2.
1 (abort) Return to level 1.
2 Return to debug level 1.
3 Return to level 0.
4 Return to top loop level 0.
Type :b for backtrace or :c <option number> to proceed.
Type :bug-form "<subject>" for a bug report template or :? for other options.
CL-USER 4 : 2 > (power 2 3 4)
Error: POWER got 3 args, wanted 2.
1 (continue) Ignore the extra arg.
2 (abort) Return to level 2.
3 Return to debug level 2.
4 Return to level 1.
5 Return to debug level 1.
6 Return to level 0.
7 Return to top loop level 0.
Type :b for backtrace or :c <option number> to proceed.
Type :bug-form "<subject>" for a bug report template or :? for other options.
ここで何が起こっていますか?もし私が2つの議論をすれば、私はそれを与えたと思う。私はそれを3つ与えると、私はそれを3つ与えたと考えます。
(power (- exponent 1))
それは次のようにする必要があります:
(power base (- exponent 1))