2016-07-10 2 views

ответ

2

Это зависит от алгоритма; некоторые из них лучше используют накладные расходы, которые обычно возникают при рекурсии, до такой степени, что они быстрее, чем их итеративные аналоги.

Как правило, это сам алгоритм имеет большое значение, а не конкретную деталь реализации.

3

Это действительно зависит от того, что вы подразумеваете под «Lisp» и «recursion».

Schemeмандатыtail call optimization, но и другие, чем вы на милость вашего реализации (и ваш optimization settings).

Например, реализация Lisp может не дать оптимизировать рекурсивные вызовы, если параметр debug выше, чем параметр speed, так что трассы более значимы. Для получения подробной информации вам необходимо обратиться к руководству по реализации.

Однако критическая точка здесь является то, что (SICP):

... компьютерный язык это не просто способ получить компьютер для выполнения операций, а ... это роман формальной среды для выражающего представления о методологии

IOW, вы пишете код для людей, чтобы читать больше, что для компьютера для выполнения, так что вам нужно больше думать в терминах того, как выразить свой алгоритм ясно, чем, как это будут скомпилированы и выполнены.

Смежные вопросы