2

我有这个任务要做,我需要解析一个错误的书面递归过程,并修复它。例如:这个:

(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 方案。

感谢和抱歉这么长的信息。

4

1 回答 1

1

您可能想阅读:http ://www.dreamsongs.com/Files/WhyOfY.pdf ,它解释了如何进行这种转换。您的作业是一种经典的编程语言技术,用于仅使用过程应用程序进行递归。

于 2012-05-02T17:08:17.150 回答