使用cond而不是if的内存球拍方案

时间:2018-11-18 17:16:49

标签: loops scheme racket infinite sicp

我正在计划我的作业。我正在寻求帮助。 基本上,我们创建了一个教师程序,并且它起作用了。然后,我们使用cond重写了if语句。现在执行该过程时,Racket内存不足。我想我们陷入无限循环。但是为什么呢?

首先,这是代码

第n个教职员工的实现。

(define (facult n)
  (define (iter product counter)
    (if (> counter n)
        product
        (iter (* counter product)(+ counter 1))))
  (iter 1 1))

现在,如果使用此自定义cond语句替换掉。

(define (new-if-statement predicate then-clause else-clause)
  (cond(predicate then-clause)
       (else else-clause)))

将原始教师程序更改为:

(define (facult n)
  (define (iter product counter)
    (new-if-statement (> counter n)
            product
            (iter (* counter product)(+ counter 1))))
  (iter 1 1))

我知道的事情: 如果您只能在执行“ then”语句时使用一个语句(与其他语句相同)。条件语句使您可以在每个谓词后使用多个语句。

但这如何帮助我找到无限循环的解决方案?

0 个答案:

没有答案