首次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)(无参数)”
再次感谢很多! (如果格式有点奇怪PS对不起...)
编辑
好了,改变了一些东西,我现在得到一个“期望类型作为第一个参数,因为:(0 0 0 0 0 1 0 1 0);其他参数是:0“错误标记在我的if语句。
>(define zz
> (lambda n
> (if (= (car n) 0) <----- here
> (zz(cdr n))
> (n))))
EDIT 2
>(define zz
> (lambda (n)
> (if (= (car n) 0)
> (zz (cdr n))
> n)))
它的工作原理,非常感谢你!
@ Scheme.Is.Strange对不起 - 我打给'='的电话已关闭。检查更新的示例。 – new123456 2012-03-28 23:36:53
是的,你的代码是完美的,你介意解释scheme语法是如何工作的吗?我知道我的问题含糊不清,问了很多,但只是一些提示会很好。 – 2012-03-28 23:40:30
好吧,我想我会更熟悉Scheme,非常感谢! – 2012-03-28 23:46:00