我有这个任务要做,我需要解析一个错误的书面递归程序,并修复它。 例如: 这样:
(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和body。 我想解析第二部分(意思是,我想列出一个列表,其中的每个术语都是“let”表达式中的单个单词)但是我似乎无法解决它,无论我尝试了什么。
我正在使用drRacket方案。
感谢并感谢抱歉。
答案 0 :(得分:1)
您可能需要阅读:http://www.dreamsongs.com/Files/WhyOfY.pdf,其中介绍了如何进行此转换。您的作业是一种经典的编程语言技术,仅用程序应用程序进行递归。