【发布时间】:2013-08-04 10:09:57
【问题描述】:
我是 Scheme 的新手,这是我的第一个函数式语言。递归地实现几乎所有东西对我来说似乎很尴尬。然而,能够实现具有单个整数输入的阶乘和斐波那契问题的函数。
但是,当你的函数有一个列表的输入时呢?假设这个练习:
FUNCTION: ret10 - 提取所有大于 10 的数字并以列表形式返回 在给定列表中找到的,guile> (ret10 '(x e (h n) 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)))
)
)
【问题讨论】:
-
哎呀。我的意思是大于 10。对此感到抱歉。已编辑。
标签: scheme