我正在尝试创建一个函数,该函数接收一个数字并将其分成三个一组:(group of of 3 12345) - > '(12 345)
这是我一直在研究的代码:
(define (group-of-three n)
(cond ((< n 1000) n))
(cond ((> n 1000)
(cons (group-of-three (quotient n 1000)) (remainder n 1000)))))
当我打电话(三人组9999)时,我得到'(#。999)
任何帮助都会非常感激,我对计划很新,所以我确信解决方案可能非常简单,我只是没有看到它。
答案 0 :(得分:2)
您的代码存在一些问题:
cond
使用不当,需要一个cond
,并且有两个相互排斥的条件。或者甚至更简单,使用if
表达式let
这就是我的意思:
(define (group-of-three n)
(helper n '()))
(define (helper n acc)
(cond ((< n 1000) (cons n acc))
(else (helper (quotient n 1000)
(cons (remainder n 1000) acc)))))
按预期工作:
(group-of-three 12345)
=> '(12 345)
(group-of-three 12345678)
=> '(12 345 678)