我是 Scheme 的新手,这是我的第一个函数式语言。递归地实现几乎所有东西对我来说似乎很尴尬。然而,能够实现具有单个整数输入的阶乘和斐波那契问题的函数。
然而,当你的函数有一个列表的输入时呢?假设这个练习:
功能: ret10 - 提取并以列表形式返回在给定列表中找到的所有大于 10 的数字,guile> (ret10 '(xe (hn) 1 23 12 o)) 输出:(23 12)
我应该将(define c(list))作为我的函数的参数吗?还是有其他方法?
请帮忙。谢谢!
这是我根据 Óscar López 爵士的回答得出的解决方案。希望这对其他人有所帮助:
(define (ret10 lst)
(cond
((null? lst) '())
((and (number? (car lst)) (> (car lst) 10))
(cons (car lst)
(ret10 (cdr lst))))
(else (ret10 (cdr lst)))
)
)