;递归版本 (define (repeated f n) (if (= n 1) f (lambda (x) (f ((repeated f (- n 1)) x))))) ;迭代版本 (define (re-iter f n) (define (iter i f-result) (if (= i n) f-result (iter (+ i 1) (lambda (x) (f (f-result x)))))) (iter 1 f))
根据提示,可以使用EX 1.42的compose过程,省去了使用lambda
1 2 3 4 5 6 7 8 9 10 11 12
;使用compose的递归版本 (define (repeated f n) (if (= n 1) f (compose f (repeated f (- n 1))))) ;使用compose的迭代版本 (define (repeated f n) (define (iter i f-result) (if (= i n) f-result (iter (+ i 1) (compose f f-result)))) (iter 1 f))