String 在DrRacket中,如何将使用if语句的程序改为使用条件语句
这是我试图解决的问题 编写一个函数String 在DrRacket中,如何将使用if语句的程序改为使用条件语句,string,list,substring,racket,String,List,Substring,Racket,这是我试图解决的问题 编写一个函数(最后一个子串lens n) 它使用Str和Nat,并返回带有 按字母顺序排在最后的长度n 记住要考虑函数是否需要它的任何功能。 争论 例如: (last-substring-len "foobar" 4) => "ooba" (last-substring-len "thequickbrownfoxjumpsoverthelazydogs" 7) => "xjumpso" 实际上,我几乎解决了我的问题,但我希望能够修改代码,以便用cond语句替
(最后一个子串lens n)
它使用Str和Nat,并返回带有
按字母顺序排在最后的长度n
记住要考虑函数是否需要它的任何功能。
争论
例如:
(last-substring-len "foobar" 4) => "ooba"
(last-substring-len "thequickbrownfoxjumpsoverthelazydogs" 7) => "xjumpso"
实际上,我几乎解决了我的问题,但我希望能够修改代码,以便用cond语句替换函数get maximium的if语句
这是我的原始代码:
(define (substrings-w-len s n)
(cond
[(> n (string-length s)) '()]
[ else (cons (substring s 0 n)
(substrings-w-len (substring s 1 (string-length s)) n))]))
(define (get-maximium string-list)
(if(null? string-list) '()
(if(= 1( length string-list)) string-list
(if (equal? #true (string>=? (first string-list) (first (rest string-list))))
(get-maximium (cons (first string-list) (rest (rest string-list))))
(get-maximium (rest string-list))))))
(define (last-substring-w-len s n)
( get-maximium (substrings-w-len s n)))
(check-expect (last-substring-w-len "foobar" 4) "ooba")
这将产生(list“ooba”)
,而它应该只产生“ooba”,因此我需要将列表转换为一个字符串,我应该能够自己解决这个问题,但如果有人能帮助我,我将不胜感激
现在的主要问题是我想用一个条件语句替换get maximum中的if语句
这是我修改get maximium函数,试图用cond语句替换if函数,但它还不起作用
(define (get-maximium string-list)
(cond
[(null? string-list) '()]
[(= 1( length string-list)) string-list]
[ else (equal? #true (string>=? (first string-list) (first (rest string list))))
(get-maximium (cons (first string-list) (rest (rest string-list))))
(get-maximium (rest string-list))]))
尝试检索答案的第一个元素,如下所示:
(define (last-substring-w-len s n)
(first ( get-maximium (substrings-w-len s n))))
(last-substring-w-len "foobar" 4) => "ooba"
(last-substring-w-len "thequickbrownfoxjumpsoverthelazydogs" 7) => "xjumpso"
有关详细说明,请参见其他
部分存在问题。应该是这样的:
(define (get-maximium string-list)
(cond [(null? string-list) '()]
[(= 1 (length string-list)) string-list]
[(string>=? (first string-list) (first (rest string list)))
(get-maximium (cons (first string-list) (rest (rest string-list))))]
[else (get-maximium (rest string-list))]))
此外,不需要问(equal?#t)
,只需问