Процедура подсчета числа пар
Бен Битобор решил написать процедуру для подсчета числа пар в любой списковой структуре. «Это легко, — думает он. — Число пар в любой структуре есть число пар в
car
плюс число пар в
cdr
плюс один на текущую пару». И он пишет следующую процедуру:
(define (count-pairs x)
(if (not (pair? x))
0
(+ (count-pairs (car x))
(count-pairs (cdr x))
1)))
Покажите, что эта процедура ошибочна. В частности, нарисуйте диаграммы, представляющие списковые структуры ровно из трех пар, для которых Бенова процедура вернет 3; вернет 4; вернет 7; вообще никогда не завершится.
Комментарии отсутствуют.