有没有一种方法可以检查给定列表是否为数字?

时间:2018-12-22 14:32:52

标签: scheme racket

我正在尝试编写计划程序,以检查给定列表是否包含数字,即,如果输入列表是数字,则程序返回true。

我一直在尝试找出我的代码出了什么问题

(define (is_num(lst))
(if (not (number? (car lst)))
    #f
(is_num(cdr lst))))

1 个答案:

答案 0 :(得分:1)

(define (isnum lst)
    (cond ((null? lst) #t)
          ((number? (car lst)) (isnum (cdr lst)))
          (else #f)))

如果所有符号都是数字,则返回#t,如果任何符号不是数字,则返回#f。 例如:

(isnum '(0 1 1 2)) ; will be #t
(isnum '(0 'a 1 2)) ; will be #f

您将需要阅读有关definein a nutshell)和conditions(我建议使用cond代替if)的信息。

您需要一个stopping condition,否则您的递归将是无限的。