Функции Рекурсия - Lisp

Формулировка задачи:

Помогите, пожалуйста, с рекурсивной функцией, никак врубиться не могу. Написать функцию, аргументом которой является многоуровневый список, атомы которого могут быть как числа, так и символьные атомы. Функция должна менять все числа на атом NUM. Например: (a s 4 (s 1 2) c) ==> (a s num (s num num) c)

Код к задаче: «Функции Рекурсия - Lisp»

textual
 (defun task (lst n) 
    (cond ((null lst) nil) 
           ((listp (car lst)) (cons (task (car lst)) (task (cdr lst)))) 
           ((numberp (car lst)) (cond ((> (car lst) n) (cons 'num (task (cdr lst))))
    (t (cons (car lst) (task (cdr lst)))))) 
    (t (cons (car lst) (task (cdr lst)))))) 
 
 (task ' (a s 10 3 f) 4)

5   голосов, оценка 3.200 из 5


СОХРАНИТЬ ССЫЛКУ