Чтобы понять концепции расширенного алгоритма, такие как жадные методы и динамическое программирование, сначала нужно хорошо разбираться в рекурсии.
Я относительно новичок в рекурсии. Всякий раз, когда задается вопрос, первыми вещами, которые возникают в виду, являются решения, использующие итерации. Несмотря на то, что я знаю, что означает рекурсивные методы и как это работает, очень сложно думать рекурсивным образом.
Пожалуйста, помогите, ответив на следующие вопросы:
1) Можно ли заменить любой итеративный метод рекурсией и наоборот?
Например, как печатать элементы в массиве размера n рекурсивно?
for i 0 to n
Print a[i]
2) Как решить проблему рекурсивно? Какие шаги? Есть ли подсказки, чтобы определить, что проблемы могут быть рекурсивно решены?
Например: если мне предлагается распечатать все подстроки строки
INPUT: CAT
OUTPUT: CAT,CA,A,AT,T
Я могу придумать итеративный способ fast.Using две петли могут решить проблему.
Но рекурсивно, как его решить. Как определить, что проблемы могут быть решены рекурсивно.
Если ответ на мой первый вопрос - да, использование двух рекурсий вместо итерации может быть решением моей проблемы?
3) Может ли кто-нибудь предложить мне некоторые материалы/ресурсы, чтобы полностью понять концепцию рекурсии?