各々の行の値が行番号の自乗であるような場合に、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))))))