В настоящее время я пишу простую программу на Схеме, которая объединяет числа вместе рекурсивно и без использования оператора +. Сейчас у меня есть эта программа, которая делает то, что я хочу сделать:Поверните рекурсивную/итеративную процедуру в полностью рекурсивную процедуру
(define (add1 x) (+ x 1))
(define (sub1 x) (- x 1))
(define (plus x y)
(if (zero? y)
x
(plus (add1 x) (sub1 y))
)
)
Однако мой учитель попросил меня опустить хвост рекурсии/итерацию и написать процедуру плюс полностью рекурсивно. Не рассказывая мне слишком много (это, в конце концов, упражнение Юни), можете ли вы указать мне в правильном направлении, чтобы выяснить, как это сделать?
Заранее благодарен!
Если вы не хотите рекурсии хвоста, вам нужно только переместить 'add1', но я не буду говорить где. (Как 'add1' * not * использовать' + '? Я уверен, что это так.) – molbdnilo
расскажите своему наставнику, что рекурсия хвоста является« полностью рекурсивной ». –
Это самое глупое упражнение, о котором я когда-либо слышал. –