Scheme Racket 计算列表无限循环中的最大元素
Scheme Racket Calculate Max Element in List Infinite Loop
我正在用 Scheme 编写我的第一个程序,在解决了一堆语法问题之后,我陷入了无限循环。我只是想检索列表中最大的数字并将其打印到控制台。这是我目前拥有的:
(define (max-num lst)
(cond [(= 0 (length lst)) (displayln "Your list is empty!")]
[(= 1 (length lst)) (displayln (car lst))]
;start comparing recursively
[>= (car lst) cdr(car lst) (max-num (list (car lst) (car(cdr lst))))]
(else (max-num(cdr lst))))
)
)
(max-num '(1 2 3 4 5))
(max-num '(-5 -3 -2 -13))
>= (car lst) cdr(car lst)
应该放在括号中,例如 [(>= (car lst) cdr(car lst)) (max-num (list (car lst) (car(cdr lst))))]
Program Stepper 是调试程序的一个非常有用的工具。
步进器将向您展示如何一次一步地评估程序。
步进器只适用于用教学语言编写的程序,所以我对你的程序做了一些改动(我没有改变逻辑)。
在 DrRacket 中打开一个新文件。粘贴下面的程序(包括最后的示例)。在 "Language" 菜单中选择 "Choose language..." 项。然后选择 "Beginner" 语言。
最后单击 "Step" 按钮(在带有复选标记+镜子的图标旁边)。
(define (max-num lst)
(cond
[(= 0 (length lst)) "Your list is empty!"]
[(= 1 (length lst)) (car lst)]
[(>= (car lst) (cdr (car lst))) (max-num (list (car lst) (car(cdr lst))))]
[else (max-num(cdr lst))]))
(max-num (list 1 2 3 4 5))
(max-num (list -5 -3 -2 -13))
点击您的方式完成评估,直到您发现错误。
我正在用 Scheme 编写我的第一个程序,在解决了一堆语法问题之后,我陷入了无限循环。我只是想检索列表中最大的数字并将其打印到控制台。这是我目前拥有的:
(define (max-num lst)
(cond [(= 0 (length lst)) (displayln "Your list is empty!")]
[(= 1 (length lst)) (displayln (car lst))]
;start comparing recursively
[>= (car lst) cdr(car lst) (max-num (list (car lst) (car(cdr lst))))]
(else (max-num(cdr lst))))
)
)
(max-num '(1 2 3 4 5))
(max-num '(-5 -3 -2 -13))
>= (car lst) cdr(car lst)
应该放在括号中,例如 [(>= (car lst) cdr(car lst)) (max-num (list (car lst) (car(cdr lst))))]
Program Stepper 是调试程序的一个非常有用的工具。 步进器将向您展示如何一次一步地评估程序。 步进器只适用于用教学语言编写的程序,所以我对你的程序做了一些改动(我没有改变逻辑)。
在 DrRacket 中打开一个新文件。粘贴下面的程序(包括最后的示例)。在 "Language" 菜单中选择 "Choose language..." 项。然后选择 "Beginner" 语言。 最后单击 "Step" 按钮(在带有复选标记+镜子的图标旁边)。
(define (max-num lst)
(cond
[(= 0 (length lst)) "Your list is empty!"]
[(= 1 (length lst)) (car lst)]
[(>= (car lst) (cdr (car lst))) (max-num (list (car lst) (car(cdr lst))))]
[else (max-num(cdr lst))]))
(max-num (list 1 2 3 4 5))
(max-num (list -5 -3 -2 -13))
点击您的方式完成评估,直到您发现错误。