第1種スターリング数とパスカルの三角形
第1種スターリング数とパスカルの三角形も第2種スターリング数と同様に書ける。この形式ではパスカルの三角形が最も基本的な形になるだろう。
(defun stirling-1st-kind-line (&optional lst) (do ((1-n (- 1 (length lst))) (b lst (cdr b)) (x 0 (car b)) (l nil (append (list (+ x (* 1-n (car b)))) l))) ((null b) (append (reverse l) (list 1))))) (defun stirling-1st-kind (n k) (do ((i -1 (1+ i)) (b nil (stirling-1st-kind-line b))) ((<= n i) (or (elt b k) 0)))) (let ((tb (make-hash-table :size 47)) (max 0)) (defun stirling-1st-kind-m (n k) (while (<= max n) (setf (gethash max tb) (stirling-1st-kind-line (gethash (1- max) tb))) (incf max)) (or (elt (gethash n tb) k) 0))) (defun pascal-triangle-line (&optional lst) (do ((b lst (cdr b)) (x 0 (car b)) (l nil (append (list (+ x (car b))) l))) ((null b) (append (reverse l) (list 1))))) (defun pascal-triangle (n k) (do ((i -1 (1+ i)) (b nil (pascal-triangle-line b))) ((<= n i) (or (elt b k) 0)))) (let ((tb (make-hash-table :size 47)) (max 0)) (defun pascal-triangle-m (n k) (while (<= max n) (setf (gethash max tb) (pascal-triangle-line (gethash (1- max) tb))) (incf max)) (or (elt (gethash n tb) k) 0)))