; ====================================================================== ; ; Structure and Interpretation of Computer Programs ; (trial answer to excercises) ; ; 计算机程序的构造和解释(习题试解) ; ; created: code17 02/25/05 ; modified: ; (保持内容完整不变前提下,可以任意转载) ; ====================================================================== ;; SICP No.1.12 ;; 输入参数x为行数,y为列数,从1开始计数 ;; 非法参数返回值为0 (define (pascal-triangle x y) (cond ((or (> 0 y) (< x y)) 0) ((or (= y 1) (= x y)) 1) (else (+ (pascal-triangle (- x 1) (- y 1)) (pascal-triangle (- x 1) y))))) ;; 另一个iterative process的解法 (define (pascal-triangle-i x y) (define (p-iter a b v) (if (= b 0) v (p-iter (- a 1) (- b 1) (* v (/ a b))))) (p-iter (- x 1) (- y 1) 1)) ;; Test-it ;; ;; Welcome to MzScheme version 209, Copyright (c) 2004 PLT Scheme, Inc. ;; > (pascal-triangle 5 3) ;; 6 ;; > (pascal-triangle 6 4) ;; 10 ;; > (pascal-triangle 3 4) ;; 0 ;; ;; > (pascal-triangle-i 5 3) ;; 6 ;; > (pascal-triangle-i 6 4) ;; 10 ;; > (pascal-triangle-i 3 4) ;; 0
本文地址:http://com.8s8s.com/it/it23203.htm