Pascal Triangle을 다음과 같이 변형해보자
각 행렬을 표시해보면 m번째 행의 n번째 열의 값은 m-1번째 행의 n번째 열과 n-1번째 열의 합임을 알 수 있다.
또한 0번째 열의 값은 0이며 n>m인 모든 m행의 n열의 값은 0 임도 알 수 있다.
이를 토대로 하면..
이므로 해당하는 코드는
이렇게 하면 행과 열을 알면 해당 배열의 값을 알아낼 수 있다.

0 1 0 0 0 0
0 1 1 0 0 0
0 1 2 1 0 0
0 1 3 3 1 0
0 1 4 6 4 1
...
각 행렬을 표시해보면 m번째 행의 n번째 열의 값은 m-1번째 행의 n번째 열과 n-1번째 열의 합임을 알 수 있다.
또한 0번째 열의 값은 0이며 n>m인 모든 m행의 n열의 값은 0 임도 알 수 있다.
이를 토대로 하면..
f(n, m) ->
n < 1 이면 0
n = 1 이면 1
n > m 이면 0
그 이외에는 f(n-1, m-1) + f(n, m-1)
이므로 해당하는 코드는
; ex 1.12
(define (pas_tri x y)
(cond ((= x 1) 1)
((< x 1) 0)
((> x y) 0)
(else (+ (pas_tri x (- y 1))
(pas_tri (- x 1) (- y 1))))))
이렇게 하면 행과 열을 알면 해당 배열의 값을 알아낼 수 있다.

댓글 없음:
댓글 쓰기