正直苦戦した
最初はリストをhogehogeして最終的にリスト内をクロールして足していけばいいじゃん!
とか思ったけど入れ子リストがうまく扱えませんでした。。。。
;;;1.12 (define (fact n) (if (= n 0) 1 (* n (fact (- n 1))) ) ) (define (combination n k) (/ (fact n) (* (fact (- n k)) (fact k) )) ) (define (pascal n count);nは段数0から (if (> count n) (newline) (begin (display (combination n count)) (if (< count n) (display "兄貴") "" ) (pascal n (+ count 1)) ) ) ) (pascal 1 0) (pascal 2 0) (pascal 3 0) (pascal 4 0) (pascal 5 0) (pascal 6 0) (pascal 7 0) (pascal 8 0) (pascal 9 0)
1兄貴1
1兄貴2兄貴1
1兄貴3兄貴3兄貴1
1兄貴4兄貴6兄貴4兄貴1
1兄貴5兄貴10兄貴10兄貴5兄貴1
1兄貴6兄貴15兄貴20兄貴15兄貴6兄貴1
1兄貴7兄貴21兄貴35兄貴35兄貴21兄貴7兄貴1
1兄貴8兄貴28兄貴56兄貴70兄貴56兄貴28兄貴8兄貴1
1兄貴9兄貴36兄貴84兄貴126兄貴126兄貴84兄貴36兄貴9兄貴1
飯食ってたら入れ子リストを足し算するのを思いついた。
多分これを使えば。。。
でもめんどいので次ぎ。
(define list1 '(1 2 3 4 5)) (define list2 '(1 ((2 3) 4) 5)) list1 list2 (define (ls_sum2 list) (cond ((null? list) 0) ((not (list? list)) list) (else (+ (ls_sum2 (car list)) (ls_sum2 (cdr list)))) )) (ls_sum2 list1 ) (ls_sum2 list2 )