各々の行の値が行番号の自乗であるような場合に、triangle 関数と同様な関数を書きなさい。ただし、while ループを使うこと。
(defun triangle2 (number-of-rows)
(let ((total 0)
(row-number 1))
(while (<= row-number number-of-rows)
(setq total (+ total (* row-number row-number)))
(setq row-number (1+ row-number)))
total))
triangle 関数と同様だが、各々の行の値を足すのでは無く、掛けていくような関数を書きなさい。
(defun triangle_multiply (number-of-rows)
(let ((total 1)
(row-number 1))
(while (<= row-number number-of-rows)
(setq total (* total row-number))
(setq row-number (1+ row-number)))
total))
上の二つの関数を再帰的な関数に書き直しなさい。また、cond を使って書き直しなさい。
triangle2のみ書き直しました。
(defun triangle_2_recursively (number-of-rows) (cond ((= number-of-rows 1) 1) (t (+ (* number-of-rows number-of-rows) (triangle_2_recursively (1- number-of-rows))))))