You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用DrRacket编写函数:将两个数字列表转换为分数列表

DrRacket 分数列表生成函数实现

需求说明

编写一个DrRacket函数,接收两个数字列表:分子列表(numerators)和分母列表(denominators),返回对应位置分子除以分母得到的分数列表。规则如下:

  • 若其中一个列表长度更短,较短列表的对应位置默认补1
  • 无需处理分母为0的情况(函数可因除零报错)

函数实现

(define (fractions nums dens)
  (cond
    [(and (empty? nums) (empty? dens)) empty]
    [(empty? nums) (cons (/ 1 (first dens)) (fractions empty (rest dens)))]
    [(empty? dens) (cons (/ (first nums) 1) (fractions (rest nums) empty))]
    [else (cons (/ (first nums) (first dens)) (fractions (rest nums) (rest dens)))]))

代码逻辑说明

  • 双空列表分支:当两个输入列表都为空时,直接返回空列表,递归终止
  • 分子列表为空分支:分子列表已遍历完,分母列表还有剩余元素,此时分子默认补1,计算1/当前分母后,继续递归处理剩余的分母列表
  • 分母列表为空分支:分母列表已遍历完,分子列表还有剩余元素,此时分母默认补1,计算当前分子/1后,继续递归处理剩余的分子列表
  • 双列表非空分支:取两个列表的首个元素计算分数,将结果加入列表头部,再递归处理两个列表的剩余部分

测试示例

  1. 标准输入输出:
    (fractions (list 1 2 3) (list 1 3 5))
    ; 输出:(list 1/1 2/3 3/5)
    
  2. 分子列表更长的情况:
    (fractions (list 4 5 6) (list 2 3))
    ; 输出:(list 4/2 5/3 6/1)
    
  3. 分母列表更长的情况:
    (fractions (list 7) (list 2 4 6))
    ; 输出:(list 7/2 1/4 1/6)
    

内容的提问来源于stack exchange,提问作者Nosferatu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 01:01:17