Поскольку это почти наверняка вопрос типа домашнего задания, только подсказки.
Как добавить 7 и 2?В то время как большинство людей просто придумывают 9, есть ли более простой способ?
Как насчет увеличения первого числа и уменьшения второго до тех пор, пока один из них не достигнет нуля?
Затем другойодин ответДавайте попробуем пример:
7 2
8 1
9 0 <- bingo
Это будет хорошо работать для натуральных чисел, хотя вы должны быть осторожны, если хотите применить его к негативам.Вы можете попасть в ситуацию (например, с 10
и -2
), когда оба числа отходят от нуля.Конечно, вы могли бы проверить это заранее и поменять местами операции.
Итак, теперь вы знаете, что можете написать +
в терминах инструкции увеличения и уменьшения.Это не фантастика для рекурсии, но, так как ваше умножение на рекурсивное добавление уже испытывает ту же проблему, это, вероятно, приемлемо.
Теперь вам просто нужно узнать, как увеличивать и уменьшать LISP без использования +
.Интересно, могут ли быть какие-то конкретные инструкции для этого: -)