SICP ex 1.12

Pascalの三角形を頂点の数から添え数を次の様に振ってみる。

a_{0,0}
a_{1,0},a_{1,1}
a_{2,0},a_{2,1},a_{2,1},a_{2,2}
a_{3,0},a_{3,1},a_{3,1},a_{3_2},a_{3,3}
a_{n-1,0},a_{n-1,1},a_{n-1,2},...a_{n-1,m-1}
a_{n,0},a_{n,1},a_{n,2},...a_{n,m-1},a_{n,m}

とすると

a_{n,m}=a_{n-1,m}+a_{n-1,m-1}

の関係があることがわかる。
n=0,m=0,n=mのときは1なので再帰的プロセスで記述した場合

(define (pascal_term n m)
  (cond ((> m n) (display "invaild arg"))
    ((= m 0) 1)
    ((= n m) 1)
    (else (+ (pascal_term (- n 1) m ) 
         (pascal_term (- n 1) (- m 1))))))

いちおうm>nはありえないので判定を