【发布时间】:2012-05-02 09:54:41
【问题描述】:
我有这个任务要做,我需要解析一个错误的书面递归过程,并修复它。 例如: 这个:
(let ((fib (lambda (n)
(cond ((= n 0) 1)
((= n 1) 1)
(else (+ (fib (- n 1)) (fib (- n 2))))))))
(fib n))
转换成这样:
(let ((fib (lambda (n fib-param)
(cond ((= n 0) 1)
((= n 1) 1)
(else (+ (fib-param (- n 1) fib-param)
(fib-param (- n 2) fib-param)))))))
(fib n fib))
该过程以引号的形式给出,包含 3 个部分:“let”、let 的 the 和主体。 我想解析第二部分(意思是,我想列出一个列表,其中的每个术语都是“let”表达式中的一个单词),但无论我尝试什么,我似乎都无法解决。
我正在使用 drRacket 方案。
感谢和抱歉这么长的消息。
【问题讨论】:
-
s/let/letrec/;p 提示:这是 Y 组合子。 -
如果我说我不明白你的答案,你会原谅我吗? :D 我对计划有点陌生...
-
这不是答案,而是评论 :) 第一部分是个玩笑(尽管是一个可行的解决方案,只需将
let替换为letrec)。 -
我很想这样做,但这是针对大学的一门课程,输出应该完全按照他们的要求,就像我给你的例子一样。
标签: scheme y-combinator racket