我正在创建一个函数,它将1输入和"x"输入之间的所有数字与dotimes循环相乘.如果你愿意,检查我的功能并说出错误,因为我不熟悉Scheme中的循环.
(define (product x)
(let ((result 1))
(dotimes (temp x)
(set! result (* temp (+ result 1))))
result))
Run Code Online (Sandbox Code Playgroud)
小智 5
使用递归.这是在Scheme/Racket中做事的方法.并尝试永远不要使用set!和其他改变变量的函数,除非真的没有其他选择.
这是Scheme中递归的教科书示例:
(define factorial
(lambda (x)
(if (<= x 1)
1
(* x (factorial (- x 1))))))
Run Code Online (Sandbox Code Playgroud)