■clispの再帰で要素が10個で0から9までの等差数列の和をトレースする。 bashとclispとawkで小学三年生レベルの等差数列の総和 http://d.hatena.ne.jp/labunix/20130114 難しく考えれば難しくなるというお話。clispとbashの例。 http://labunix.hateblo.jp/entry/20140413/1397316749 ■以下で十分だと思うのですが。。。 $ echo "(+ `seq 0 9`)" | clisp -q [1]> 45 $ echo "`seq 0 9`))))))))))" | sed -e 's/^/(+ /' | tr -d '\n' | clisp -q [1]> 45 ■今回は再帰で。 $ echo '(defun fact (n)(if (= n 0) n (+ n (fact (- n 1)))))(fact 9)' | \ clisp -q [1]> FACT [2]> 45 ■再帰だとトレースしたくなるので、「(trace fact)」を挟む。 $ echo '(defun fact (n)(if (= n 0) n (+ n (fact (- n 1)))))(trace fact)(fact 9)' | \ clisp -q [1]> FACT [2]> ;; Tracing function FACT. (FACT) [3]> 1. Trace: (FACT '9) 2. Trace: (FACT '8) 3. Trace: (FACT '7) 4. Trace: (FACT '6) 5. Trace: (FACT '5) 6. Trace: (FACT '4) 7. Trace: (FACT '3) 8. Trace: (FACT '2) 9. Trace: (FACT '1) 10. Trace: (FACT '0) 10. Trace: FACT ==> 0 9. Trace: FACT ==> 1 8. Trace: FACT ==> 3 7. Trace: FACT ==> 6 6. Trace: FACT ==> 10 5. Trace: FACT ==> 15 4. Trace: FACT ==> 21 3. Trace: FACT ==> 28 2. Trace: FACT ==> 36 1. Trace: FACT ==> 45 45