我是Scheme的新手。我试图编写一个程序,将(整数)乘法定义为重复加法。在python中,程序看起来像:
a = int(raw_input(['please enter a number to be multiplied']))
b = int(raw_input(['please enter a number to multiply by']))
y = a
print y
for i in range(b-1):
y+=a
print y
尝试使用Scheme时有两个问题,一个是“硬”,一个是“软”:
答案 0 :(得分:0)
使用递归代替迭代。一般的想法是:
mult(a, b)
if b == 0, return 0
return a + mult(a, b-1)
现在,您可以自己在Scheme中编写代码吗?
答案 1 :(得分:0)
在Racket(一个Scheme衍生物)中,有一个“命名为let”,可以在每个循环中继续添加b次(更容易理解这个概念):
(let loop ((n 0)
(s 0))
(cond
([= n b] s)
(else (loop (add1 n) (+ s a)))))