【问题标题】:How to do a multiplying table on Scheme/Racket如何在方案/球拍上做一个乘法表
【发布时间】:2021-12-08 10:38:31
【问题描述】:

所以我对 Scheme 非常陌生,我一直在尝试做一个乘法表,如果你把 (乘法表 10 3) 应该给出一个列表 (3 6 9 12 15 18 21 24 27 30)

这是我的代码

(define (multiplying-table n value)
  (cond ((= n 0) '())
        (else (* n value)(Multiplying-table(- n 1)))))

【问题讨论】:

  • 提示:当你想建立一个列表时,通常在某处有一个cons

标签: list scheme racket multiplication


【解决方案1】:

您需要使用cons 将第一个数字3 与其余的列表组合起来。

例如。 (3 6 ...)(cons 3 (cons 6 ...))。相反,您有两个表达式,其中 (* n value) 仅用于效果,因为从未使用过结果。因此,每次调用都应该返回空列表。

通常有两种方法可以做到这一点。在cons 内使用递归或使用累加器。由于列表是从头到尾创建的,您可以向下计数n 并从头到尾构建列表。基本情况将只返回默认情况下为空列表的累加器。这是一个例子:

(define (sequence from to)
  (let loop ((n to) (acc '()))
    (if (< n from)
        acc
        (loop (- n 1) (cons n acc)))))

(sequence 5 10) ; ==> (5 6 7 8 9 10)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    • 2022-07-27
    相关资源
    最近更新 更多