如何在方案/球拍上做乘法表 [英] How to do a multiplying table on Scheme/Racket

查看:29
本文介绍了如何在方案/球拍上做乘法表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我对Scheme非常陌生,我一直在尝试做一个乘法表,如果您把 (乘法表103)应列出列表(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将第一个数字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)

这篇关于如何在方案/球拍上做乘法表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆