Scheme 使用十进制数并以一元数形式返回的函数
我正在设计一个函数,它使用一个自然数,如0、1、2……等,并使用符号I返回以一元基数1表示的字符串,同时在一元形式后以十进制形式显示数字。如果我输入2,我会得到II2。5,我会得到II5 我是这样做的:Scheme 使用十进制数并以一元数形式返回的函数,scheme,racket,Scheme,Racket,我正在设计一个函数,它使用一个自然数,如0、1、2……等,并使用符号I返回以一元基数1表示的字符串,同时在一元形式后以十进制形式显示数字。如果我输入2,我会得到II2。5,我会得到II5 我是这样做的: (define (number->unary c ) (cond [(= c 1 ) "I (1)" ] [(= c 2 ) "II (2)" ] [(= c 3) "III (3)"] [(= c 4) "
(define (number->unary c )
(cond
[(= c 1 ) "I (1)" ]
[(= c 2 ) "II (2)" ]
[(= c 3) "III (3)"]
[(= c 4) "IIII (4)"]
[(= c 5) "IIIII (5)"]
[(= c 6) "IIIIII (6)"]
[(= c 7) "IIIIIII (7)"]
[(= c 8) "IIIIIIII (8)"]
[(= c 9) "IIIIIIIII (9)"]
[(= c 10) "IIIIIIIIII (10)"]))
但是有没有更简单的方法来解决这个问题呢?我一直在阅读有关数字->字符串、字符串附加和复制的内容,但我不知道从哪里开始 确实有一种更简单的方法——使用循环生成适当数量的I字符。想想看,如果c等于100会发生什么?你不应该为此创造一百个条件 这里有一种可能的方法,使用一个助手过程来实现一个名为loop的递归过程的迭代:
这适用于初级学生语言 下面生成一元部分
(define (number->unary c )
(cond
[(= c 0) ""]
[else (string-append "I" (number->unary (- c 1)))]))
后面追加计数器是否确定括号
是否要在输出中?@Josh您使用的教学语言是什么?至少,你能使用递归过程吗?我使用的是初学者。下面说它只要求函数体有一个表达式,但找到了一个额外的部分。
(define (number->unary c )
(cond
[(= c 0) ""]
[else (string-append "I" (number->unary (- c 1)))]))