如何创建一个函数,将所有数字在1和“x”之间与dotimes相乘?

时间:2011-06-10 19:56:06

标签: scheme racket

我正在创建一个函数,它将1输入和“x”输入之间的所有数字与dotimes循环相乘。如果你愿意,请检查我的功能并说出错误,因为我不熟悉Scheme中的循环。

(define (product x)
  (let ((result 1))
        (dotimes (temp x)
                 (set! result (* temp (+ result 1))))
    result))

1 个答案:

答案 0 :(得分:5)

使用递归。这是在Scheme / Racket中做事的方法。并且尽量不要使用set!和其他改变变量的函数,除非没有其他选择。

以下是Scheme中递归的教科书示例:

(define factorial
  (lambda (x)
    (if (<= x 1)
        1
        (* x (factorial (- x 1))))))