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

编写生成递增除数列表的主包装函数与递归辅助函数

生成递增顺序除数的Scheme函数实现

需要实现主函数divisors和递归辅助函数divisors-from,生成某个自然数的所有除数并按递增顺序排列,例如调用(divisors 28)应返回(list 1 2 4 7 14 28)。

实现逻辑

辅助函数divisors-from的作用是从指定数字k开始,筛选出n的所有大于等于k的除数,核心递归逻辑如下:

  • 基线条件:当k大于n时,返回空列表,没有更多除数需要检查
  • 递归条件:
    • 如果k能整除n(通过modulo函数判断余数是否为0),则将k加入结果列表,再递归调用divisors-from检查下一个数k+1
    • 如果k不能整除n,直接递归调用divisors-from检查下一个数k+1

完整代码

;; divisors-from: Nat Nat -> (listof Nat)
;; 从k开始,返回n的所有大于等于k的除数,按递增顺序排列
(define (divisors-from k n)
  (cond
    [(> k n) '()]
    [(zero? (modulo n k))
     (cons k (divisors-from (+ k 1) n))]
    [else
     (divisors-from (+ k 1) n)]))

;; divisors: Nat -> (listof Nat)
;; 返回n的所有除数,按递增顺序排列
(define (divisors n) (divisors-from 1 n))

测试验证

调用(divisors 28),会返回(1 2 4 7 14 28),完全符合要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:07:09