乘法等于重复加法?

Multiplication as repeated addition?

我是 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 编写时遇到了两个问题,一个 'hard' 和一个 'soft':

  1. 'hard' 问题:我在 Scheme 中找不到与范围函数等效的函数。我应该如何实施?
  2. 'soft'问题:书中此时还没有为Scheme引入for循环,这让我相信解决方案不包含for循环;但是,如果是 easier/better.
  3. ,我可以使用 for 循环

您使用递归代替迭代。大意是:

mult(a, b)
    if b == 0, return 0
    return a + mult(a, b-1)

现在,你能自己在 Scheme 中编写代码吗?

在Racket(一种Scheme衍生品)中有"named let"可以在每个循环中连续添加b次(更容易理解这个概念):

(let loop ((n 0)
           (s 0))
  (cond
    ([= n b]  s)
    (else (loop (add1 n) (+ s a)))))