我正在尝试编写计划程序,以检查给定列表是否包含数字,即,如果输入列表是数字,则程序返回true。
我一直在尝试找出我的代码出了什么问题
(define (is_num(lst))
(if (not (number? (car lst)))
#f
(is_num(cdr lst))))
答案 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
您将需要阅读有关define(in a nutshell)和conditions(我建议使用cond
代替if
)的信息。
您需要一个stopping condition,否则您的递归将是无限的。