многоуровневые усписки - Lisp

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

Определите функцию (f s n), где s - список, n - число. Функция должна возвращать n-ый атом из списка s. Список s может быть многоуровневым. Например, если вызвать функцию (f '((a k) ((b d) (q w) f) g) 5), то программа должна выдать Q.

Код к задаче: «многоуровневые усписки - Lisp»

textual
(defun task2 (lst n)
  (cond ((null lst) (cons n nil))
        ((atom (car lst)) (print (car lst)) (if (= n 1) (car lst) (task2 (cdr lst) (- n 1))))
        (t (let ((res (task2 (car lst) n)))
                (if (atom res) 
                    res 
                    (task2 (cdr lst) (car res)))))))

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


СОХРАНИТЬ ССЫЛКУ
Похожие ответы
Для поиска решения или похожих решений вы можете воспользоваться "Поиском по сайту" или "Поиском по разделу"
Поиск по сайту