Scheme 如何创建一个将1和“1”之间的所有数字相乘的函数;x";有时间吗?
我在做一个函数,用dotimes循环将1输入和x输入之间的所有数字相乘。若你们愿意的话,请检查我的函数,并说明出了什么问题,因为我对方案中的循环不太了解Scheme 如何创建一个将1和“1”之间的所有数字相乘的函数;x";有时间吗?,scheme,racket,Scheme,Racket,我在做一个函数,用dotimes循环将1输入和x输入之间的所有数字相乘。若你们愿意的话,请检查我的函数,并说明出了什么问题,因为我对方案中的循环不太了解 (define (product x) (let ((result 1)) (dotimes (temp x) (set! result (* temp (+ result 1)))) result)) 使用递归。这是做事情的方法。不要使用set和其他更改变量的函数,除非真的没有其
(define (product x)
(let ((result 1))
(dotimes (temp x)
(set! result (* temp (+ result 1))))
result))
使用递归。这是做事情的方法。不要使用
set
和其他更改变量的函数,除非真的没有其他选择
下面是Scheme中递归的教科书示例:
(define factorial
(lambda (x)
(if (<= x 1)
1
(* x (factorial (- x 1))))))
(定义阶乘)
(λ(x)
(如果(Scheme)没有dotimes
(IIRC,这是一种常见的Lisp语言)。我用dotimes学习Scheme,我可以在racket(plt Scheme)中构造dotimes cicles,你刚才问过。我同意。如果你在Scheme/racket职业生涯的早期使用set!你正在挫败目标,更重要的是,没有抓住要点。