都是用r5rs的标准写的... 所以cond和let什么的就不能用[]了。 这个是求一个列表的数字的总和的函数,也蛮简单,小写的字母l代表list类型的参数。
- (define (h l init)
- (cond
- ((null? l) init)
- (else (h (cdr l) (+ init (car l))))))
- (h (quote (1 2 3 4)) 0)
- ;;;和上一篇写的生成列表的f相调用,求一下从1加到100
- (define (f x y l)
- (cond
- ((> x y) l)
- (else (f (+ x 1) y (cons x l)))))
- (h (f 1 100 (quote ())) 0)
- ;;;其实从1加到100可以直接用这个函数:
- (define (sum start end temp)
- (cond
- ((> start end) temp)
- (else (sum (+ 1 start) end (+ start temp)))))
- (sum 1 100 0)
阅读(811) | 评论(0) | 转发(0) |