2015-10-19 7 views
0

Рекурсия более общая, чем итерация?, который является более общей рекурсией или итерацией?

для меня Итерация означает повторяющееся управление с использованием языковых конструкций, отличных от вызовов подпрограмм (например, петлевых конструкций и/или явных goto), тогда как рекурсия означает повторное управление, полученное с использованием вызовов подпрограмм). что более общее в этих двух?

+0

Определите, что вы подразумеваете под «общим» в своем вопросе. –

+0

@John: наиболее часто используемые или предпочтительные – want2

+1

О, ну в этом случае это определенно зависит от вашего языка. Покажите мне значимую программу C без 'while' или' for'; покажите мне значимую программу Scala или LISP без рекурсивного прохода. – Tommy

ответ

2

Проголосовало за то, чтобы как можно скорее ответить на ваши мнения; мой отзыв на основе ответа: рекурсия более общая, потому что:

  1. это просто пользовательский случай вызовов функций, которые уже будут иметь язык; и
  2. рекурсии захватывает как прямой шаблон один-к-одному повторения и более сложные шаблоны, такие как обхода дерева, разделяй и властвуй, и т.д.

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

1

Насколько это не основано на мнениях, наиболее разумным ответом является то, что ни рекурсия, ни итерация не являются более общими, чем другие. Язык может быть Тьюрингом полным с рекурсией, но без итерации (минимальные Лиспы такие), и язык также может быть Тьюрингом с итерацией, но без рекурсии (более ранние версии Fortran не поддерживают рекурсию). Широко используются как рекурсия, так и итерация. Итерация, вероятно, чаще используется, поскольку для каждого человека, который изучает программирование с помощью чего-то вроде Lisp или Haskell, вероятно, есть дюжина, которые учатся программированию с такими вещами, как Java или Visual Basic, - но я не думаю, что «наиболее часто используемый» является хороший синоним для «общего».

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