【发布时间】:2012-03-29 08:01:14
【问题描述】:
第一次使用stackoverflow,但偶尔潜伏,希望你们能帮助我。
所以我的任务的第一部分是删除列表中的所有“前导零”。
例如:(0 0 0 0 0 1 0 1 0 1) -> (1 0 1 0 1)
为此,我想使用 IF 语句来检查第一个元素是否为 0,并递归调用列表的其余部分,直到不再有前导零。由于我基本上不知道如何在 Scheme 中编程,通过搜索互联网,我想出了您在下面看到的内容。然而,当我运行它时,DrRacket 告诉我没有任何参数——我认为这是一个语法错误……或者更可能的是,我不知道我在做什么。所以,如果你能帮助我,我真的很感激!
>(define zz
> (lambda (n)
> (if (= (car (n)) 0)
> (zz (cdr (n)))
> ((n)))))
>
>(remove '(0 0 0 0 1 0 1 0))
我在 DrRacket 中得到的错误是:
"程序应用:预期程序,给定:(0 0 0 0 1 0 1 0)(无参数)"
再次,非常感谢! (P.S.抱歉,如果格式有点奇怪......)
编辑
好的,改变一些东西,我现在得到一个“期望类型作为第一个参数,给定:(0 0 0 0 0 1 0 1 0);其他参数是:0”在我的 if 语句中标记错误。
>(define zz
> (lambda n
> (if (= (car n) 0) <----- here
> (zz(cdr n))
> (n))))
编辑 2
>(define zz
> (lambda (n)
> (if (= (car n) 0)
> (zz (cdr n))
> n)))
成功了,非常感谢!
【问题讨论】: