РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния EcmaScript. РСкурсия ΠΈ Π΅Ρ‘ Π²ΠΈΠ΄Ρ‹

БСгодня ΠΌΡ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ наши изыскания Π½Π° Ρ‚Π΅ΠΌΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования Π² Ρ€Π°Π·Ρ€Π΅Π·Π΅ EcmaScript, Π½Π° спСцификации ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ основан JavaScript. Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΡΡ‚Π°Ρ‚ΡŒΡΡ… Ρ†ΠΈΠΊΠ»Π° Π±Ρ‹Π»ΠΈ рассмотрСны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Π΅ΠΌΡ‹:

РСкурсия

РСку́рсия β€” ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, описаниС, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ»ΠΈ процСсса Π²Π½ΡƒΡ‚Ρ€ΠΈ самого этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ»ΠΈ процСсса, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ситуация, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ самого сСбя. Π’Π΅Ρ€ΠΌΠΈΠ½ «рСкурсия» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… областях Π·Π½Π°Π½ΠΈΠΉ β€” ΠΎΡ‚ лингвистики Π΄ΠΎ Π»ΠΎΠ³ΠΈΠΊΠΈ, Π½ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅.

ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΏΠΎΠ΄ рСкурсиСй ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽΡ‚ процСссы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ сами сСбя Π² своём Ρ‚Π΅Π»Π΅. РСкурсивная функция ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ…:

Π’Ρ‹Π΄Π΅Π»ΠΈΠΌ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹Π΅ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ рСкурсивной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ условиС

ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ двиТСния ΠΏΠΎ рСкурсии

Π’Π°ΠΆΠ½ΠΎ ΠΎΡΠΎΠ·Π½Π°Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ рСкурсия это Π½Π΅ какая-Ρ‚ΠΎ спСцифичСская Ρ„ΠΈΡ‡Π° JS, Π° Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° ΠΎΡ‡Π΅Π½ΡŒ распространённая Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ.

РСкурсивный ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ процСссы

Π Π΅ΠΊΡƒΡ€ΡΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ двумя способами: Ρ‡Π΅Ρ€Π΅Π· рСкурсивный процСсс ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ.

РСкурсивный процСсс ΠΌΡ‹ с Π²Π°ΠΌΠΈ ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ:

Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΎ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»Π΅ выглядСло Π±Ρ‹ Ρ‚Π°ΠΊ:

Оба этих Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° это рСкурсия. Π’ ΠΎΠ±ΠΎΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΡ… Π΅ΡΡ‚ΡŒ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹Π΅ для рСкурсии Ρ‡Π΅Ρ€Ρ‚Ρ‹: Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ условиС ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ двиТСния ΠΏΠΎ рСкурсии. Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ ΠΈΡ… отличия.

РСкурсивный процСсс Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ дСйствиС. ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π°Π΄ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ. Дойдя Π΄ΠΎ Ρ‚Π΅Ρ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ условия, ΠΎΠ½ выполняСт всС Π·Π°ΠΏΠΎΠΌΠ½Π΅Π½Π½Ρ‹Π΅ дСйствия Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС. Поясним Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. Когда рСкурсивный процСсс считаСт Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π» 6, Ρ‚ΠΎ Π΅ΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ 5 чисСл Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΡ… Π² самом ΠΊΠΎΠ½Ρ†Π΅, ΠΊΠΎΠ³Π΄Π° ΡƒΠΆΠ΅ Π½ΠΈΠΊΡƒΠ΄Π° Π½Π΅ Π΄Π΅Ρ‚ΡŒΡΡ ΠΈ рСкурсивно Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ Π²Π³Π»ΡƒΠ±ΡŒ большС нСльзя. Когда ΠΌΡ‹ находимся Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΎ Π³Π΄Π΅-Ρ‚ΠΎ снаруТи этого Π²Ρ‹Π·ΠΎΠ²Π° Π² памяти хранятся эти Π·Π°ΠΏΠΎΠΌΠ½Π΅Π½Π½Ρ‹Π΅ числа.

Выглядит это ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, основная идСя рСкурсивного процСсса β€” ΠΎΡ‚ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π½ΠΈΠ΅ вычислСния Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π°.
Π’Π°ΠΊΠΎΠΉ процСсс ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅Ρ‚ измСняСмоС Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ состояниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ хранится Β«Π³Π΄Π΅-Ρ‚ΠΎΒ» снаруТи Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π”ΡƒΠΌΠ°ΡŽ, Π²Ρ‹ ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° ΠΎ Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ ΠΎ ваТности ΠΈΠΌΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ отсутствия состояния. НаличиС состояния ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π½Π΅ всСгда Π»Π΅Π³ΠΊΠΎ справится.

Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ процСсс отличаСтся ΠΎΡ‚ рСкурсивного фиксированным количСством состояний. На ΠΊΠ°ΠΆΠ΄ΠΎΠΌ своём шагС ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ процСсс считаСт всё, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, поэтому ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ шаг рСкурсии сущСствуСт нСзависимо ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ.

Π”ΡƒΠΌΠ°ΡŽ, ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ процСсс потрСбляСт мСньшС памяти. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, всСгда ΠΏΡ€ΠΈ создании рСкурсии слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ. ЕдинствСнноС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅: Ссли ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎ достиТСния Ρ‚Π΅Ρ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ условия.

ДрСвовидная рСкурсия

МногиС ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Π΄Π΅Ρ€Π΅Π²ΡŒΡ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с Π½ΠΈΠΌΠΈ это Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π·Π°ΡƒΠΌΠ½ΠΎΠ΅, слоТноС ΠΈ Π½Π΅ понятноС простым смСртным. На самом Π΄Π΅Π»Π΅ это Π½Π΅ Ρ‚Π°ΠΊ. Π›ΡŽΠ±Π°Ρ иСрархичСская структура ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСна Π² Π²ΠΈΠ΄Π΅ Π΄Π΅Ρ€Π΅Π²Π°. Π”Π°ΠΆΠ΅ чСловСчСскоС ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π΄Π΅Ρ€Π΅Π²Ρƒ.

Π§Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΡƒΡŽ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ простой ΠΈ популярный ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” числа Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ.

Чи́сла Ѐибона́ччи β€” элСмСнты числовой ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, … (ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ A000045 Π² OEIS), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° числа Ρ€Π°Π²Π½Ρ‹ Π»ΠΈΠ±ΠΎ 1 ΠΈ 1, Π»ΠΈΠ±ΠΎ 0 ΠΈ 1, Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ число Ρ€Π°Π²Π½ΠΎ суммС Π΄Π²ΡƒΡ… ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… чисСл. Названы Π² Ρ‡Π΅ΡΡ‚ΡŒ срСднСвСкового ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° Π›Π΅ΠΎΠ½Π°Ρ€Π΄ΠΎ Пизанского (извСстного ΠΊΠ°ΠΊ Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ).

ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈ довольно просто ΡΡ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ описаниС (Π° вСдь Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π΅ΡΡ‚ΡŒ описаниС) Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌ ΠΎΡ‚ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ ΠΊ логичСским рассуТдСниям(Π½Π°ΠΌ вСдь Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ). Для вычислСния fib(5) Π½Π°ΠΌ придётся Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ fib(4) ΠΈ fib(3). Для вычислСния fib(4) Π½Π°ΠΌ придётся Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ fib(3) ΠΈ fib(2). Для вычислСния fib(3) Π½Π°ΠΌ придётся Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ fib(2) ΠΈ Ρ‚Π°ΠΊ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ ΠΏΠΎΠΊΠ° ΠΌΡ‹ Π½Π΅ Π΄ΠΎΠΉΠ΄Ρ‘ΠΌ Π΄ΠΎ извСстных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (1) ΠΈ (2) Π² нашСй матСматичСской ΠΌΠΎΠ΄Π΅Π»ΠΈ.

На ΠΊΠ°ΠΊΠΈΠ΅ мысли нас Π΄ΠΎΠ»ΠΆΠ½Ρ‹ навСсти наши рассуТдСния? ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ. Π’Π΅Ρ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ условиС ΠΌΠΎΠΆΠ½ΠΎ ΡΡ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ n

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ рСкурсия – объяснСниС Π² Π±Π»ΠΎΠΊ-схСмах ΠΈ Π²ΠΈΠ΄Π΅ΠΎ

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽ Π²Π°ΡˆΠ΅ΠΌΡƒ вниманию ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠΈ Beau Carnes How Recursion Works β€” explained with flowcharts and a video.

РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

«Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ, Π½Π°Π΄ΠΎ сначала ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽΒ»

Π Π΅ΠΊΡƒΡ€ΡΠΈΡŽ ΠΏΠΎΡ€ΠΎΠΉ слоТно ΠΏΠΎΠ½ΡΡ‚ΡŒ, особСнно Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°ΠΌ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Если Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ просто, Ρ‚ΠΎ рСкурсия – это функция, которая сама Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ сСбя. Но Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΡŽ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΄Π²Π΅Ρ€ΡŒ Π² спальню, Π° ΠΎΠ½Π° Π·Π°ΠΊΡ€Ρ‹Ρ‚Π°. Π’Π°Ρˆ Ρ‚Ρ€Π΅Ρ…Π»Π΅Ρ‚Π½ΠΈΠΉ сынок появляСтся ΠΈΠ·-Π·Π° ΡƒΠ³Π»Π° ΠΈ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ СдинствСнный ΠΊΠ»ΡŽΡ‡ спрятан Π² ΠΊΠΎΡ€ΠΎΠ±ΠΊΠ΅. Π’Ρ‹ ΠΎΠΏΠ°Π·Π΄Ρ‹Π²Π°Π΅Ρ‚Π΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈ Π’Π°ΠΌ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΠΊΠΎΠΌΠ½Π°Ρ‚Ρƒ ΠΈ Π²Π·ΡΡ‚ΡŒ Π²Π°ΡˆΡƒ Ρ€ΡƒΠ±Π°ΡˆΠΊΡƒ.

Π’Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΊΠΎΡ€ΠΎΠ±ΠΊΡƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ найти… Π΅Ρ‰Π΅ большС ΠΊΠΎΡ€ΠΎΠ±ΠΎΠΊ. ΠšΠΎΡ€ΠΎΠ±ΠΊΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΡ€ΠΎΠ±ΠΎΠΊ ΠΈ Π²Ρ‹ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅, Π² ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· Π½ΠΈΡ… Π’Π°Ρˆ ΠΊΠ»ΡŽΡ‡. Π’Π°ΠΌ срочно Π½ΡƒΠΆΠ½Π° Ρ€ΡƒΠ±Π°ΡˆΠΊΠ°, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½Π°Π΄ΠΎ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈ Π½Π°ΠΉΡ‚ΠΈ ΠΊΠ»ΡŽΡ‡.

Π•ΡΡ‚ΡŒ Π΄Π²Π° основных ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π² создании Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹: ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΈ рСкурсивный. Π’ΠΎΡ‚ Π±Π»ΠΎΠΊ-схСмы этих ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ²:

РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Какой ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ для Вас ΠΏΡ€ΠΎΡ‰Π΅?

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ†ΠΈΠΊΠ» while. Π’.Π΅. ΠΏΠΎΠΊΠ° стопка ΠΊΠΎΡ€ΠΎΠ±ΠΎΠΊ полная, Ρ…Π²Π°Ρ‚Π°ΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΡ€ΠΎΠ±ΠΊΡƒ ΠΈ смотри Π²Π½ΡƒΡ‚Ρ€ΡŒ Π½Π΅Π΅. НиТС Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ псСвдокода Π½Π° Javascript, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ происходит (ПсСвдокод написан ΠΊΠ°ΠΊ ΠΊΠΎΠ΄, Π½ΠΎ большС ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ Π½Π° чСловСчСский язык).

Π’ Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ рСкурсия. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, рСкурсия – это ΠΊΠΎΠ³Π΄Π° функция Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ саму сСбя. Π’ΠΎΡ‚ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π² псСвдокодС:

Оба ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎΠΆΠ΅. ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΉ смысл Π² использовании рСкурсивного ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ поняв, Π²Ρ‹ смоТСтС Π»Π΅Π³ΠΊΠΎ Π΅Π³ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ. Π’ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹ΡˆΠ° Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΡ‚ использования рСкурсии. ΠŸΠΎΡ€ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ с Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ быстрСС, Π½ΠΎ простота рСкурсии ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ рСкурсия ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°Ρ…, ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Если рСкурсия Π΄ΠΎ сих ΠΏΠΎΡ€ Π½Π΅ каТСтся Π’Π°ΠΌ простой, Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΉΡ‚Π΅ΡΡŒ: Π― ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡΡŒ ΠΏΡ€ΠΎΠΉΡ‚ΠΈΡΡŒ Π΅Ρ‰Π΅ ΠΏΠΎ нСскольким ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌ.

Π“Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹ΠΉ ΠΈ рСкурсивный случай

Π’ΠΎ, Ρ‡Ρ‚ΠΎ Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡ€ΠΈ написании рСкурсивной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это бСсконСчный Ρ†ΠΈΠΊΠ», Ρ‚.Π΅. ΠΊΠΎΠ³Π΄Π° функция Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ саму сСбя… ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ.
Допустим, Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ подсчСта. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Π΅ рСкурсивно Π½Π° Javascript, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ:

РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Π­Ρ‚Π° функция Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄ΠΎ бСсконСчности. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ, Ссли Π’Ρ‹ Π²Π΄Ρ€ΡƒΠ³ запустили ΠΊΠΎΠ΄ с бСсконСчным Ρ†ΠΈΠΊΠ»ΠΎΠΌ, остановитС Π΅Π³ΠΎ сочСтаниСм клавиш Β«Ctrl-CΒ». (Или, работая ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ Π² CodePen, это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² β€œ?turn_off_js=true” Π² ΠΊΠΎΠ½Ρ†Π΅ URL.)

РСкурсивная функция всСгда Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π½Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Π΅ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ. Π’ рСкурсивной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ всСгда Π΅ΡΡ‚ΡŒ Π΄Π²Π° случая: рСкурсивный ΠΈ Π³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹ΠΉ случаи. РСкурсивный случай – ΠΊΠΎΠ³Π΄Π° функция Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ саму сСбя, Π° Π³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹ΠΉ – ΠΊΠΎΠ³Π΄Π° функция пСрСстаСт сСбя Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ. НаличиС Π³Ρ€Π°Π½ΠΈΡ‡Π½ΠΎΠ³ΠΎ случая ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π°Ρ†ΠΈΠΊΠ»ΠΈΠ²Π°Π½ΠΈΠ΅.

И снова функция подсчСта, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠΆΠ΅ с Π³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹ΠΌ случаСм:

РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Π’ΠΎ, Ρ‡Ρ‚ΠΎ происходит Π² этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ. Π― поясню, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΄ΠΈΡ‚Π΅ Π² Π½Π΅Π΅ Ρ†ΠΈΡ„Ρ€Ρƒ 5.

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ Ρ†ΠΈΡ„Ρ€Ρƒ 5, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Console.Log. Π’.ΠΊ. 5 Π½Π΅ мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ 1, Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ Π² Π±Π»ΠΎΠΊ else. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ снова Π²Ρ‹Π·ΠΎΠ²Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΄ΠΈΠΌ Π² Π½Π΅Π΅ Ρ†ΠΈΡ„Ρ€Ρƒ 4 (Ρ‚.ΠΊ. 5 – 1 = 4).

ΠœΡ‹ Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ Ρ†ΠΈΡ„Ρ€Ρƒ 4. И снова i Π½Π΅ мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ 1, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² Π±Π»ΠΎΠΊ else ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Ρ†ΠΈΡ„Ρ€Ρƒ 3. Π­Ρ‚ΠΎ продолТаСтся, ΠΏΠΎΠΊΠ° i Π½Π΅ станСт Ρ€Π°Π²Π½Ρ‹ΠΌ 1. И ΠΊΠΎΠ³Π΄Π° это случится ΠΌΡ‹ Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ Π² консоль 1 ΠΈ i станСт мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ 1. НаконСц ΠΌΡ‹ Π·Π°ΠΉΠ΄Π΅ΠΌ Π² Π±Π»ΠΎΠΊ с ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом return ΠΈ Π²Ρ‹ΠΉΠ΄Π΅ΠΌ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π‘Ρ‚Π΅ΠΊ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²

РСкурсивныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Β«Π‘Ρ‚Π΅ΠΊ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²Β». Когда ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, функция отправляСтся Π½Π° Π²Π΅Ρ€Ρ… стСка Π²Ρ‹Π·ΠΎΠ²ΠΎΠ². Π­Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° стопку ΠΊΠ½ΠΈΠ³, Π²Ρ‹ добавляСтС ΠΎΠ΄Π½Ρƒ Π²Π΅Ρ‰ΡŒ Π·Π° ΠΎΠ΄Π½ΠΈ Ρ€Π°Π·. Π—Π°Ρ‚Π΅ΠΌ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΡΠ½ΡΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ, Π²Ρ‹ всСгда снимаСтС Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ элСмСнт.

Π― ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽ Π’Π°ΠΌ стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π² дСйствии, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ подсчСта Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»Π°. Factorial(5) ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ 5! ΠΈ рассчитываСтся ΠΊΠ°ΠΊ 5! = 5*4*3*2*1. Π’ΠΎΡ‚ рСкурсивная функция для подсчСта Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»Π° числа:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Ρ‡Ρ‚ΠΎ ΠΆΠ΅ происходит, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ fact(3). НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ шаг Π·Π° шагом ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ происходит Π² стСкС. Бамая вСрхняя ΠΊΠΎΡ€ΠΎΠ±ΠΊΠ° Π² стСкС Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Π’Π°ΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ fact, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡŒ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚:

РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Π—Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ fact содСрТит свою ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ копию x. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎΠ΅ условиС для Ρ€Π°Π±ΠΎΡ‚Ρ‹ рСкурсии. Π’Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‚ x.

Нашли ΡƒΠΆΠ΅ ΠΊΠ»ΡŽΡ‡?

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΊΡ€Π°Ρ‚Π΅Π½ΡŒΠΊΠΎ вСрнСмся ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ поиска ΠΊΠ»ΡŽΡ‡Π° Π² ΠΊΠΎΡ€ΠΎΠ±ΠΊΠ°Ρ…. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π±Ρ‹Π» ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ с использованиСм Ρ†ΠΈΠΊΠ»ΠΎΠ²? Богласно этому ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρƒ Π’Ρ‹ создаСтС стопку ΠΊΠΎΡ€ΠΎΠ±ΠΎΠΊ для поиска, поэтому всСгда Π·Π½Π°Π΅Ρ‚Π΅ Π² ΠΊΠ°ΠΊΠΈΡ… ΠΊΠΎΡ€ΠΎΠ±ΠΊΠ°Ρ… Π²Ρ‹ Π΅Ρ‰Π΅ Π½Π΅ искали.

РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Но Π² рСкурсивном ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ Π½Π΅Ρ‚ стопки. Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚ΠΎΠ³Π΄Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π² ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΡ€ΠΎΠ±ΠΊΠ΅ слСдуСт ΠΈΡΠΊΠ°Ρ‚ΡŒ? ΠžΡ‚Π²Π΅Ρ‚: Β«Π‘Ρ‚ΠΎΠΏΠΊΠ° ΠΊΠΎΡ€ΠΎΠ±ΠΎΠΊΒ» сохраняСтся Π² стСкС. ЀормируСтся стСк ΠΈΠ· Π½Π°ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Ρ… ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… содСрТит свой Π½Π°ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ список ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΎΠΊ для просмотра. Π‘Ρ‚Π΅ΠΊ слСдит Π·Π° стопкой ΠΊΠΎΡ€ΠΎΠ±ΠΎΠΊ для Вас!

И Ρ‚Π°ΠΊ, спасибо рСкурсии, Π’Ρ‹ Π½Π°ΠΊΠΎΠ½Π΅Ρ† смогли Π½Π°ΠΉΡ‚ΠΈ свой ΠΊΠ»ΡŽΡ‡ ΠΈ Π²Π·ΡΡ‚ΡŒ Ρ€ΡƒΠ±Π°ΡˆΠΊΡƒ!

РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΌΠΎΠ΅ пятиминутноС Π²ΠΈΠ΄Π΅ΠΎ ΠΏΡ€ΠΎ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ. Оно Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡƒΡΠΈΠ»ΠΈΡ‚ΡŒ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… здСсь ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚ Π°Π²Ρ‚ΠΎΡ€Π°

НадСюсь, Ρ‡Ρ‚ΠΎ ΡΡ‚Π°Ρ‚ΡŒΡ внСсла Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ большС ясности Π² Π’Π°ΡˆΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ рСкурсии Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Основой для ΡΡ‚Π°Ρ‚ΡŒΠΈ послуТил ΡƒΡ€ΠΎΠΊ Π² ΠΌΠΎΠ΅ΠΌ Π½ΠΎΠ²ΠΎΠΌ Π²ΠΈΠ΄Π΅ΠΎ курсС ΠΎΡ‚ Manning Publications ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Β«Algorithms in MotionΒ». И курс ΠΈ ΡΡ‚Π°Ρ‚ΡŒΡΡ написаны ΠΏΠΎ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ Β«Grokking AlgorithmsΒ», Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ являСтся Adit Bhargava, ΠΊΠ΅ΠΌ ΠΈ Π±Ρ‹Π»ΠΈ нарисованы всС эти Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ.

И Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ свои знания ΠΎ рСкурсии, Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ эту ΡΡ‚Π°Ρ‚ΡŒΡŽ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, Π΅Ρ‰Π΅ Ρ€Π°Π·.

ΠžΡ‚ сСбя Ρ…ΠΎΡ‡Ρƒ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ с интСрСсом наблюдаю Π·Π° ΡΡ‚Π°Ρ‚ΡŒΡΠΌΠΈ ΠΈ Π²ΠΈΠ΄Π΅ΠΎΡƒΡ€ΠΎΠΊΠ°ΠΌΠΈ Beau Carnes, ΠΈ надСюсь Ρ‡Ρ‚ΠΎ Π’Π°ΠΌ Ρ‚ΠΎΠΆΠ΅ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»Π°ΡΡŒ ΡΡ‚Π°Ρ‚ΡŒΡ ΠΈ Π² особСнности эти Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠ· ΠΊΠ½ΠΈΠ³ΠΈ A. Bhargav Β«Grokking AlgorithmsΒ».

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

РСкурсия. Π—Π°Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΊΠΈ

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Ρ€Π΅Ρ‡ΡŒ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ ΠΎ Π·Π°Π΄Π°Ρ‡Π°Ρ… Π½Π° Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ ΠΈ ΠΎ Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊ ΠΈΡ… Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ.
РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

ΠšΡ€Π°Ρ‚ΠΊΠΎ ΠΎ рСкурсии

РСкурсия достаточно распространённоС явлСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ встрСчаСтся Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² областях Π½Π°ΡƒΠΊΠΈ, Π½ΠΎ ΠΈ Π² повсСднСвной ΠΆΠΈΠ·Π½ΠΈ. НапримСр, эффСкт ДростС, Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ БСрпинского ΠΈ Ρ‚. Π΄. Один ΠΈΠ· Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ – это навСсти Web-ΠΊΠ°ΠΌΠ΅Ρ€Ρƒ Π½Π° экран ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, СстСствСнно, ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΅Ρ‘ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ². Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠ°ΠΌΠ΅Ρ€Π° Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ экрана ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΆΠ΅ Π½Π° этот экран, получится Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ Π·Π°ΠΌΠΊΠ½ΡƒΡ‚ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°. Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Π½Π΅Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅Π΅ Π½Π° Ρ‚ΠΎΠ½Π½Π΅Π»ΡŒ.

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ рСкурсия тСсно связана с функциями, Ρ‚ΠΎΡ‡Π½Π΅Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ благодаря функциям Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ сущСствуСт Ρ‚Π°ΠΊΠΎΠ΅ понятиС ΠΊΠ°ΠΊ рСкурсия ΠΈΠ»ΠΈ рСкурсивная функция. ΠŸΡ€ΠΎΡΡ‚Ρ‹ΠΌΠΈ словами, рСкурсия – ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ части Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (ΠΌΠ΅Ρ‚ΠΎΠ΄Π°) Ρ‡Π΅Ρ€Π΅Π· саму сСбя, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ это функция, которая Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ саму сСбя, нСпосрСдствСнно (Π² своём Ρ‚Π΅Π»Π΅) ΠΈΠ»ΠΈ косвСнно (Ρ‡Π΅Ρ€Π΅Π· Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ).

Π—Π°Π΄Π°Ρ‡ΠΈ

ΠŸΡ€ΠΈ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ рСкурсии Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивным для понимания рСкурсии являСтся Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡.

Π›ΡŽΠ±ΠΎΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π² рСкурсивной Ρ„ΠΎΡ€ΠΌΠ΅, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ пСрСписан Π² ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. ΠžΡΡ‚Π°Π½Π΅Ρ‚ΡΡ вопрос, Π½Π°Π΄ΠΎ Π»ΠΈ это, ΠΈ насколько это Π±ΡƒΠ΄Π΅Ρ‚ это эффСктивно.

Для обоснования ΠΌΠΎΠΆΠ½ΠΎ привСсти Ρ‚Π°ΠΊΠΈΠ΅ Π΄ΠΎΠ²ΠΎΠ΄Ρ‹.

Для Π½Π°Ρ‡Π°Π»Π° ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ рСкурсии ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. РСкурсия β€” это Ρ‚Π°ΠΊΠΎΠΉ способ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ сама сСбя нСпосрСдствСнно, Π»ΠΈΠ±ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π˜Ρ‚Π΅Ρ€Π°Ρ†ΠΈΡ β€” это способ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ дСйствия ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‚ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ, Π½Π΅ приводя ΠΏΡ€ΠΈ этом ΠΊ рСкурсивным Π²Ρ‹Π·ΠΎΠ²Π°ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

ПослС Ρ‡Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π²Π·Π°ΠΈΠΌΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΠΌΡ‹, Π½ΠΎ Π½Π΅ всСгда с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ Π·Π°Ρ‚Ρ€Π°Ρ‚Π°ΠΌΠΈ ΠΏΠΎ рСсурсам ΠΈ скорости. Для обоснования ΠΌΠΎΠΆΠ½ΠΎ привСсти Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: имССтся функция, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅ΠΊΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° имССтся Ρ†ΠΈΠΊΠ», Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ дСйствий Π² зависимости ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ значСния счСтчика (ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ Π½Π΅Π³ΠΎ ΠΈ Π½Π΅ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ). Π Π°Π· имССтся Ρ†ΠΈΠΊΠ», Π·Π½Π°Ρ‡ΠΈΡ‚, Π² Ρ‚Π΅Π»Π΅ повторяСтся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ дСйствий β€” ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π°. МоТно вынСсти ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΅ΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика, Ссли Ρ‚Π°ΠΊΠΎΠ²ΠΎΠ΅ Π΅ΡΡ‚ΡŒ. По Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡŽ выполнСния ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΡ‹ провСряСм условия выполнСния Ρ†ΠΈΠΊΠ»Π°, ΠΈ Ссли ΠΎΠ½ΠΎ Π²Π΅Ρ€Π½ΠΎ, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ Π½ΠΎΠ²ΠΎΠΌΡƒ Π²Ρ‹Π·ΠΎΠ²Ρƒ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ссли Π»ΠΎΠΆΠ½ΠΎ β€” Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. Π’.ΠΊ. всС содСрТаниС Ρ†ΠΈΠΊΠ»Π° ΠΌΡ‹ помСстили Π² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π·Π½Π°Ρ‡ΠΈΡ‚, условиС Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π° ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ‡Π΅Ρ€Π΅Π· Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‰Π΅Π΅ΡΡ ΠΏΠΎ ссылкС ΠΈΠ»ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. Π”Π°Π»Π΅Π΅ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π·ΠΎΠ² Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° Π»Π΅Π³ΠΊΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π° Π²Ρ‹Π·ΠΎΠ², ΠΈΠ»ΠΈ Π½Π΅ Π²Ρ‹Π·ΠΎΠ² (Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° значСния ΠΈΠ»ΠΈ просто Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹) ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ· Π½Π΅Π΅ самой, Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΡƒΡΡΡŒ ΠΊΠ°ΠΊΠΈΠΌΠΈ-Π»ΠΈΠ±ΠΎ условиями (Ρ‚Π΅ΠΌΠΈ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅ Π±Ρ‹Π»ΠΈ Π² условии Ρ†ΠΈΠΊΠ»Π°). Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Π½Π°ΡˆΡƒ Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ‚Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΎΠ½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ выглядит ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈ ΠΈΡ… использованиС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡŽ, Ρ‚.Π΅. ΠΌΡ‹ Π·Π°ΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» Π½Π° рСкурсивный Π²Ρ‹Π·ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.

Π—Π°Π΄Π°Ρ‡Π° ΠΏΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡŽ рСкурсии ΠΊ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΌΡƒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρƒ симмСтрична.

Подводя ΠΈΡ‚ΠΎΠ³, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ мысли: для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° сущСствуСт свой класс Π·Π°Π΄Π°Ρ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСтся ΠΏΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ трСбованиям ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅.

Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ с этим ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ Ρ‚ΡƒΡ‚

Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Ρƒ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° (Ρ†ΠΈΠΊΠ»Π°) Ρƒ рСкурсии Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ условиС остановки β€” Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ случай (ΠΈΠ½Π°Ρ‡Π΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Ρ†ΠΈΠΊΠ» рСкурсия Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π²Π΅Ρ‡Π½ΠΎ β€” infinite). Π­Ρ‚ΠΎ условиС ΠΈ являСтся Ρ‚Π΅ΠΌ случаСм ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ рСкурсия ΠΈΠ΄Π΅Ρ‚ (шаг рСкурсии). ΠŸΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС вызываСтся рСкурсивная функция Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ ΠΏΠΎΠΊΠ° ΠΏΡ€ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ Π½Π΅ сработаСт Π±Π°Π·ΠΎΠ²ΠΎΠ΅ условиС ΠΈ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ остановка рСкурсии(Π° Ρ‚ΠΎΡ‡Π½Π΅Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΊ послСднСму Π²Ρ‹Π·ΠΎΠ²Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ). Всё Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ сводится ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ случая. Π’ случаС, ΠΊΠΎΠ³Π΄Π° рСкурсивная функция вызываСтся для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ слоТной Π·Π°Π΄Π°Ρ‡ΠΈ (Π½Π΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ случая) выполняСтся Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ количСство рСкурсивных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΈΠ»ΠΈ шагов, с Ρ†Π΅Π»ΡŒΡŽ свСдСния Π·Π°Π΄Π°Ρ‡ΠΈ ΠΊ Π±ΠΎΠ»Π΅Π΅ простой. И Ρ‚Π°ΠΊ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.

Π’ΡƒΡ‚ Π‘Π°Π·ΠΎΠ²Ρ‹ΠΌ условиСм являСтся условиС ΠΊΠΎΠ³Π΄Π° n=1. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ Ρ‡Ρ‚ΠΎ 1!=1 ΠΈ для вычислСния 1! Π½Π°ΠΌ Π½ΠΈ Ρ‡Π΅Π³ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ. Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ 2! ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ 1!, Ρ‚.Π΅. 2!=1!*2. Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ 3! Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ 2!*3… Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ n! Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ (n-1)!*n. Π­Ρ‚ΠΎ ΠΈ являСтся шагом рСкурсии. Π˜Π½Ρ‹ΠΌΠΈ словами, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»Π° ΠΎΡ‚ числа n, достаточно ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ Π½Π° n Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»Π° ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ числа.

Π’ сСти ΠΏΡ€ΠΈ обьяснСнии рСкурсии Ρ‚Π°ΠΊΠΆΠ΅ Π΄Π°ΡŽΡ‚ΡΡ Π·Π°Π΄Π°Ρ‡ΠΈ нахоТдСния чисСл Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ ΠΈ Π₯анойская башня

Рассмотрим ΠΆΠ΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ слоТности.
ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΈΡ… Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ описанный Π²Ρ‹ΡˆΠ΅. ΠŸΡ€ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ рСкурсивно. Какой Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ случай Π² Π·Π°Π΄Π°Ρ‡Π΅? Какой Π¨Π°Π³ рСкурсии ΠΈΠ»ΠΈ рСкурсивноС условиС?

ΠŸΠΎΠ΅Ρ…Π°Π»ΠΈ! РСшСния Π·Π°Π΄Π°Ρ‡ прСдоставлСны Π½Π° языкС Java.

A: ΠžΡ‚ 1 Π΄ΠΎ n
Π”Π°Π½ΠΎ Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΎΠ΅ число n. Π’Ρ‹Π²Π΅Π΄ΠΈΡ‚Π΅ всС числа ΠΎΡ‚ 1 Π΄ΠΎ n.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΡ€ΠΎΡΡ‚Ρ‹ΠΌΠΈ словами ΠΎ рСкурсии

Dec 19, 2020 Β· 4 min read

РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ рСкурсия, ΠΈΠ»ΠΈ ΠΆΠ΅ рСкурсивная функция β€” это такая функция, которая Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ саму сСбя.

Π Π΅ΠΊΡƒΡ€ΡΠΈΡŽ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ с ΠΌΠ°Ρ‚Ρ€Ρ‘ΡˆΠΊΠΎΠΉ. ΠŸΠ΅Ρ€Π²Π°Ρ ΠΊΡƒΠΊΠ»Π° самая большая, Π·Π° Π½Π΅ΠΉ ΠΈΠ΄Ρ‘Ρ‚ Ρ‚ΠΎΡ‡Π½ΠΎ такая ΠΆΠ΅ ΠΊΡƒΠΊΠ»Π°, Π½ΠΎ помСньшС. Π‘ΡƒΡ‚ΡŒ ΠΌΠ°Ρ‚Ρ€Ρ‘ΡˆΠΊΠΈ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Π΅Ρ‘ ΠΈ Π΄ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒ ΠΈΠ· Π½Π΅Ρ‘ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΡƒΡŽ ΠΆΠ΅ ΠΊΡƒΠΊΠ»Ρƒ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ мСньшС. Π’Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ процСсс длится Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π΅ Π΄ΠΎΠΉΠ΄Ρ‘Ρ‚Π΅ Π΄ΠΎ послСднСй ΠΊΡƒΠΊΠ»Ρ‹, которая ΠΈ ΠΏΡ€Π΅Ρ€Π²Ρ‘Ρ‚ Ρ†ΠΈΠΊΠ». Π’Π°ΠΊ выглядит Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Π°Ρ рСпрСзСнтация рСкурсии.

НС ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ Π»ΠΈ рСкурсивная функция ΠΊ бСсконСчному Ρ†ΠΈΠΊΠ»Ρƒ?

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ отсчёта с использованиСм рСкурсии:

Как ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ:

ΠŸΡ€ΠΎΡ‰Π΅ говоря, рСкурсия Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚ΠΎ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ ΠΊΠΎΠ΄ Π½ΠΈΠΆΠ΅:

ΠŸΠ»ΡŽΡΡ‹ ΠΈ минусы рСкурсивных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠ»ΡŽΡΡ‹ ΠΈ минусы, Π΄Π°Π²Π°ΠΉΡ‚Π΅ взглянСм Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ рСкурсии.

ΠŸΠ»ΡŽΡΡ‹:

Под этим подразумСваСтся, Ρ‡Ρ‚ΠΎ рСкурсии, Π² сравнСнии с Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ, тратят мСньшС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π΄ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π§Π΅ΠΌ мСньшС строк ΠΊΠΎΠ΄Π° Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚, Ρ‚Π΅ΠΌ быстрСС функция Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ сСбя. ОсобСнно Ρ…ΠΎΡ€ΠΎΡˆΠΎ это проявляСтся ΠΏΡ€ΠΈ Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎ позволяСт ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄.

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ мСмоизация β€” это ΠΌΠ΅Ρ‚ΠΎΠ΄ сохранСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для прСдотвращСния ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Ρ… вычислСний. Π­Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· способов ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, примСняСмый для увСличСния скорости выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. β€” ВикипСдия

И всё ΠΆΠ΅ стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ рСкурсия Π½Π΅ всСгда Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎ скорости ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ.

МногиС согласятся, Ρ‡Ρ‚ΠΎ эта ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Π°. РСкурсия проста Π² ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π½Π΅ содСрТит слоТных ΠΈ Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… конструкций.

ΠœΠΈΠ½ΡƒΡΡ‹:

РСкурсивныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΡ‘ΠΌ памяти Π²ΠΎ врСмя своСго выполнСния. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² стСк Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒΡΡ Π½ΠΎΠ²Ρ‹ΠΉ элСмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ мСсто Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° функция Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ, найдя ΠΎΡ‚Π²Π΅Ρ‚, Π»ΠΈΠ±ΠΎ ΠΏΠΎΠΊΠ° Π½Π΅ Π΄ΠΎΠΉΠ΄Ρ‘Ρ‚ Π΄ΠΎ выполнСния Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ условия Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ «стСк»?

Π‘Ρ‚Π΅ΠΊ β€” это такая структура Π΄Π°Π½Π½Ρ‹Ρ…, которая Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ Β«Last In, First OutΒ» (послСдним ΠΏΡ€ΠΈΡˆΡ‘Π» β€” ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΡƒΡˆΡ‘Π»). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, элСмСнт «проталкиваСтся» Π² стСк ΠΈ добавляСтся Π² Π΅Π³ΠΎ ΠΊΠΎΠ½Π΅Ρ†, Π° Π·Π°Ρ‚Π΅ΠΌ «выталкиваСтся» ΠΈΠ· стСка ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ.

РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Π‘Ρ‚ΠΎΠΈΡ‚ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ рСкурсии вмСсто ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ²?

Оба этих ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ эффСктивны для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡, ΠΎΠ΄Π½Π°ΠΊΠΎ Π²Ρ‹Π±ΠΎΡ€ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ… зависит ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, поставлСнной ΠΏΠ΅Ρ€Π΅Π΄ Π²Π°ΠΌΠΈ.

РСкурсии эффСктивны Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слишком слоТны, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΏΠΎ Π½ΠΈΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ². Π‘Ρ‚ΠΎΠΈΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ ΠΎ цСнности памяти ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΈΠ΄ΡƒΡ‰Π΅ΠΌ Π²ΠΊΡƒΠΏΠ΅ с рСкурсивной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ накопилось слишком ΠΌΠ½ΠΎΠ³ΠΎ элСмСнтов.

Π¦ΠΈΠΊΠ»Ρ‹ Ρ‚Π°ΠΊ ΠΆΠ΅ эффСктивны Π² ΠΏΠ»Π°Π½Π΅ скорости ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΎΠ½ΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ мСньшС памяти Π² стСкС ΠΈ ΠΈΡ… Π»Π΅Π³Ρ‡Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² Ρ‚Π΅Π»Π΅ Ρ†ΠΈΠΊΠ»Π° содСрТится большС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ происходит Π²Π½ΡƒΡ‚Ρ€ΠΈ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

РСкурсия Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Анализ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ²

РСкурсия β€” это свойство ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΠΎΠ΄Ρ€Π°ΠΆΠ°Ρ‚ΡŒ самому сСбС. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ являСтся рСкурсивным Ссли Π΅Π³ΠΎ части выглядят Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ вСсь ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. РСкурсия ΠΎΡ‡Π΅Π½ΡŒ ΡˆΠΈΡ€ΠΎΠΊΠΎ примСняСтся Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ:

Π‘Ρ‚Π°Ρ‚ΡŒΡ посвящСна Π°Π½Π°Π»ΠΈΠ·Ρƒ трудоСмкости рСкурсивных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ матСматичСскиС свСдСния, рассмотрСны ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, описана Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°ΠΌΠ΅Π½Ρ‹ рСкурсии Ρ†ΠΈΠΊΠ»ΠΎΠΌ, хвостовая рСкурсия.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ рСкурсивных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ²

РСкурсивный Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ всСгда Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅Ρ‚ Π·Π°Π΄Π°Ρ‡Ρƒ Π½Π° части, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎ своСй структурС ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΆΠ΅ ΠΊΠ°ΠΊ исходная Π·Π°Π΄Π°Ρ‡Π°, Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ простыми. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ функция вызываСтся рСкурсивно, Π° ΠΈΡ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ. Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ происходит лишь Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π΅Π΅ Π½Π΅ удаСтся Ρ€Π΅ΡˆΠΈΡ‚ΡŒ сразу (ΠΎΠ½Π° являСтся слишком слоТной).

НапримСр, Π·Π°Π΄Π°Ρ‡Ρƒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ массива Π½Π΅Ρ€Π΅Π΄ΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ свСсти ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π΅Π³ΠΎ частСй. Π”Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° части выполняСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΈ Π½Π΅ станут элСмСнтарными, Ρ‚.Π΅. достаточно простыми Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±Π΅Π· дальнСйшСго упрощСния.

Поиск элСмСнта массива

Алгоритм Π΄Π΅Π»ΠΈΡ‚ исходный массив Π½Π° Π΄Π²Π΅ части β€” ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт ΠΈ массив ΠΈΠ· ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов. ВыдСляСтся Π΄Π²Π° простых случая, ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π΅ трСбуСтся β€” ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ всС элСмСнты ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт являСтся искомым.

Π’ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ поиска Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ массив ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΈ ΠΈΠ½Π°Ρ‡Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠΏΠΎΠ»Π°ΠΌ), Π½ΠΎ это Π½Π΅ сказалось Π±Ρ‹ Π½Π° эффСктивности. Если массив отсортирован β€” Ρ‚ΠΎ Π΅Π³ΠΎ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΏΠΎΠ»Π°ΠΌ цСлСсообразно, Ρ‚.ΠΊ. Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС количСство ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ Π½Π° ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ.

Π”Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ поиск Π² массивС

Π”Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ поиск выполняСтся Π½Π°Π΄ отсортированным массивом. На ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС искомый элСмСнт сравниваСтся со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, находящимся посСрСдинС массива. Π’ зависимости ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² сравнСния Π»ΠΈΠ±ΠΎ лСвая, Π»ΠΈΠ±ΠΎ правая части ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Β«ΠΎΡ‚Π±Ρ€ΠΎΡˆΠ΅Π½Ρ‹Β».

ВычислСниС чисСл Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ

Числа Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Ρ€Π΅ΠΊΡƒΡ€Ρ€Π΅Π½Ρ‚Π½Ρ‹ΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Ρ‚.Π΅. Ρ‚Π°ΠΊΠΈΠΌ, Ρ‡Ρ‚ΠΎ вычислСниС элСмСнта ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ выраТаСтся ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… элСмСнтов: \(F_0 = 0, F_1 = 1, F_n = F_ + F_, n > 2\).

Быстрая сортировка (quick sort)

Алгоритм быстрой сортировки Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· элСмСнтов (ΠΎΠΏΠΎΡ€Π½Ρ‹ΠΉ) ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅Π³ΠΎ раздСляСт массив Π½Π° Π΄Π²Π΅ части, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ рСкурсивно. Π’ ΠΎΠ΄Π½Ρƒ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ элСмСнты мСньшС ΠΎΠΏΠΎΡ€Π½ΠΎΠ³ΠΎ, Π° Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ β€” ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅.

РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈΠ‘Π»ΠΎΠΊ-схСма Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° быстрой сортировки

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° слияниСм (merge sort)

Π’ основС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° сортировки слияниСм Π»Π΅ΠΆΠΈΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ быстрого объСдинСния упорядочСнных массивов (ΠΈΠ»ΠΈ списков) Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ оказался упорядочСнным. Алгоритм раздСляСт исходный массив Π½Π° Π΄Π²Π΅ части ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠΎΠΏΠΎΠ»Π°ΠΌ), рСкурсивно сортируСт ΠΈΡ… ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ происходит Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Ρ€Π°Π·ΠΌΠ΅Ρ€ массива большС Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹, Ρ‚.ΠΊ. пустой массив ΠΈ массив ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ элСмСнта всСгда отсортированы.

РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ РСкурсия Ρ‡Ρ‚ΠΎ это простыми словами Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈΠ‘Π»ΠΎΠΊ схСма сортировки слияниСм

На ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС слияния ΠΈΠ· ΠΎΠ±ΠΎΠΈΡ… списков выбираСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ элСмСнт. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ, наимСньший ΠΈΠ· Π½ΠΈΡ… добавляСтся ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ ΠΈ помСчаСтся ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ. БлияниС происходит Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· списков Π½Π΅ окаТСтся пуст.

Анализ рСкурсивных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ²

ΠŸΡ€ΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ слоТности цикличСских Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² рассчитываСтся Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΎΡΡ‚ΡŒ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈ ΠΈΡ… количСство Π² Π½Π°ΠΈΡ…ΡƒΠ΄ΡˆΠ΅ΠΌ, Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠ΅ΠΌ ΠΈ срСднСм случаях [4]. Однако Π½Π΅ получится ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ рСкурсивной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚.ΠΊ. Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎ Ρ€Π΅ΠΊΡƒΡ€Ρ€Π΅Π½Ρ‚Π½ΠΎΠ΅ ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅. НапримСр, для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ поиска элСмСнта Π² массивС:

Π Π΅ΠΊΡƒΡ€Ρ€Π΅Π½Ρ‚Π½Ρ‹Π΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π½Π°ΠΌ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ β€” ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡ… просто Ρ‚Π°ΠΊ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ, Π° Π·Π½Π°Ρ‡ΠΈΡ‚, ΠΈ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ². НСобходимо ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρƒ, которая ΠΎΠΏΠΈΡˆΠ΅Ρ‚ Ρ€Π΅ΠΊΡƒΡ€Ρ€Π΅Π½Ρ‚Π½ΠΎΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ β€” ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ способом ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это являСтся ΠΏΠΎΠ΄Π±ΠΎΡ€ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° подстановки, Π° Π·Π°Ρ‚Π΅ΠΌ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ соотвСтствия Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ матСматичСской ΠΈΠ½Π΄ΡƒΠΊΡ†ΠΈΠΈ.

ΠœΠ΅Ρ‚ΠΎΠ΄ подстановки (ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ)

Π—Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π·Π°ΠΌΠ΅Π½Π΅ Ρ€Π΅ΠΊΡƒΡ€Ρ€Π΅Π½Ρ‚Π½ΠΎΠΉ части Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ для получСния Π½ΠΎΠ²Ρ‹Ρ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Π—Π°ΠΌΠ΅Π½Π° производится Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ получится ΡƒΠ»ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΈ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² Π²ΠΈΠ΄Π΅ Π½Π΅Ρ€Π΅ΠΊΡƒΡ€Ρ€Π΅Π½Ρ‚Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹. НапримСр для поиска элСмСнта Π² массивС:

МоТно ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ \(T^_n = T^_ + k\times\mathcal(1)\), Π½ΠΎ Ρ‚ΠΎΠ³Π΄Π° \(T^_n = T^_ <0>+ n\times\mathcal(1) = \mathcal(n)\).

ΠœΡ‹ Π²Ρ‹Π²Π΅Π»ΠΈ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρƒ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ шаг содСрТит ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ‚.Π΅. Π½Π΅ имССтся Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π° соотвСтствия Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ Ρ€Π΅ΠΊΡƒΡ€Ρ€Π΅Π½Ρ‚Π½ΠΎΠΌΡƒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ β€” ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ позволяСт ΠΌΠ΅Ρ‚ΠΎΠ΄ матСматичСской ΠΈΠ½Π΄ΡƒΠΊΡ†ΠΈΠΈ.

ΠœΠ΅Ρ‚ΠΎΠ΄ матСматичСской ΠΈΠ½Π΄ΡƒΠΊΡ†ΠΈΠΈ

ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΡΡ‚ΠΈΠ½Π½ΠΎΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ утвСрТдСния (\(P_n\)), состоит ΠΈΠ· Π΄Π²ΡƒΡ… шагов:

Π”ΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ прСдполоТСния, сдСланного ΠΏΡ€ΠΈ ΠΎΡ†Π΅Π½ΠΊΠΈ трудоСмкости Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ поиска (\(T^_n = (n+1)\times\mathcal(1)\)):

Часто, Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ β€” достаточно Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΈΠΉ процСсс, Π½ΠΎ Π΅Ρ‰Π΅ слоТнСС Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ Π·Π°ΠΊΠΎΠ½ΠΎΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ подстановки. Π’ связи с этим примСняСтся, Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ, ΠΎΠ±Ρ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ [5].

ΠžΠ±Ρ‰ΠΈΠΉ (основной) ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ€Π΅ΠΊΡƒΡ€Ρ€Π΅Π½Ρ‚Π½Ρ‹Ρ… ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ

ΠžΠ±Ρ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ являСтся ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ провСсти ΠΎΡ†Π΅Π½ΠΊΡƒ слоТности ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° вычислСния чисСл Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ. Однако, ΠΎΠ½ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ для всСх случаСв использования ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° «раздСляй ΠΈ властвуй» [3]:

\(T_n = a\cdot T(\frac)+f_n; a, b = const, a \geq 1, b > 1, f_n > 0, \forall n\).

УравнСния Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ Ссли исходная Π·Π°Π΄Π°Ρ‡Π° раздСляСтся Π½Π° a ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ \(\frac\) элСмСнтов. \(f_n\) β€” Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ разбиСния Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° части ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ. Помимо Π²ΠΈΠ΄Π° ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ, ΠΎΠ±Ρ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ ограничСния Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ \(f_n\), выдСляя Ρ‚Ρ€ΠΈ случая:

Для провСдСния Π°Π½Π°Π»ΠΈΠ·Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ подстановки ΠΈΠ»ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ рассуТдСния: ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ рСкурсивный Π²Ρ‹Π·ΠΎΠ² ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ, Π·Π½Π°Ρ‡ΠΈΡ‚ всСго ΠΈΡ… Π±ΡƒΠ΄Π΅Ρ‚ n ΡˆΡ‚ΡƒΠΊ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ \( \mathcal(1)\). Π’ΠΎΠ³Π΄Π° \(T^_n = n \cdot \mathcal(1) = \mathcal(n)\).

Анализ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° сортировки слияниСм

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π½Π° Π΄Π²Π΅ части, ΠΎΠ±Π΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ: \(a = 2, b = 2, n^ <\log_b a>= n\).

ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ списка, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ выполнСния \(\Theta(n)\) ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Π° для массива β€” выполняСтся Π·Π° постоянноС врСмя (\(\Theta(1)\)). Однако, Π½Π° соСдинСниС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π² любом случаС Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Ρ‚Ρ€Π°Ρ‡Π΅Π½ΠΎ \(\Theta(n)\), поэтому \(f_n = n\).

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²Ρ‚ΠΎΡ€ΠΎΠΉ случай Ρ‚Π΅ΠΎΡ€Π΅ΠΌΡ‹: \(T^_n = \Theta(n^ <\log_b a>\cdot \log n) = \Theta(n \cdot \log n)\).

Анализ трудоСмкости быстрой сортировки

Π’ Π»ΡƒΡ‡ΡˆΠ΅ΠΌ случаС исходный массив раздСляСтся Π½Π° Π΄Π²Π΅ части, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… содСрТит ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ исходных Π΄Π°Π½Π½Ρ‹Ρ…. Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ выполнСния n ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Π’Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° зависит ΠΎΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… структур Π΄Π°Π½Π½Ρ‹Ρ… β€” для массива \(\mathcal(n)\), для связного списка \(\mathcal(1)\). \(a = 2, b = 2, f_n = b\), Π·Π½Π°Ρ‡ΠΈΡ‚ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΊΠ°ΠΊ Ρƒ сортировки слияниСм: \(T^_n = \mathcal(n \cdot \log n)\).

Однако, Π² Ρ…ΡƒΠ΄ΡˆΠ΅ΠΌ случаС Π² качСствС ΠΎΠΏΠΎΡ€Π½ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ постоянно Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ»ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт массива. Π’ΠΎΠ³Π΄Π° \(b = 1\), Π° Π·Π½Π°Ρ‡ΠΈΡ‚, ΠΌΡ‹ ΠΎΠΏΡΡ‚ΡŒ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Ρ‚Π΅ΠΎΡ€Π΅ΠΌΡƒ. Однако, ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² этом случаС Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ n рСкурсивных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… выполняСт Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ массива Π½Π° части (\(\mathcal(n)\)) β€” Π·Π½Π°Ρ‡ΠΈΡ‚ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° \(T^_n = \mathcal(n^2)\).

ΠŸΡ€ΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ быстрой сортировки ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ подстановки, ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π±Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΉ ΠΈ Π½Π°ΠΈΡ…ΡƒΠ΄ΡˆΠΈΠΉ случаи.

Π₯востовая рСкурсия ΠΈ Ρ†ΠΈΠΊΠ»

Анализ трудоСмкости рСкурсивных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ слоТнСС Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠΉ ΠΎΡ†Π΅Π½ΠΊΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ², Π½ΠΎ основной ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ†ΠΈΠΊΠ»Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ высокиС Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ Π½Π° Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ПослС Π²Ρ‹Π·ΠΎΠ²Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрСдаСтся Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ управлСния достаточно ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ рСгистра ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ счСтчика, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ процСссор Ρ…Ρ€Π°Π½ΠΈΡ‚ Π½ΠΎΠΌΠ΅Ρ€ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ выполняСмой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ β€” Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ пСрСдаСтся ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ вСтвям Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ использовании условного ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°. Однако, Π²Ρ‹Π·ΠΎΠ² β€” это Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° управлСния, вСдь послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ вызванная функция Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ вычислСния, ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² Ρ‚ΠΎΡ‡ΠΊΡƒ, ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ осущСствлялся Π²Ρ‹Π·ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ значСния Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сущСствовали Ρ‚Π°ΠΌ Π΄ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°.

Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ повСдСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ стСк (стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², call stack) β€” Π² Π½Π΅Π³ΠΎ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΈ информация ΠΎ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π‘Ρ‚Π΅ΠΊ Π½Π΅ являСтся бСсконСчным, поэтому рСкурсивныС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ, Π² любом случаС Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π½ΠΈΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π’ рядС случаСв Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ достаточно Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, рассмотрСнныС Π²Ρ‹ΡˆΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ поиска ΠΈ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ поиска [4]. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях трСбуСтся Π±ΠΎΠ»Π΅Π΅ творчСский ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, Π½ΠΎ Ρ‡Π°Ρ‰Π΅ всСго такая Π·Π°ΠΌΠ΅Π½Π° оказываСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, сущСствуСт особый Π²ΠΈΠ΄ рСкурсии, ΠΊΠΎΠ³Π΄Π° рСкурсивный Π²Ρ‹Π·ΠΎΠ² являСтся послСднСй ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ, выполняСмой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π² Ρ‚Π°ΠΊΠΎΠΌ случаС Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π°Ρ функция Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ Π΅ΠΉ Π½Π΅Ρ‚ смысла Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅. Вакая рСкурсия называСтся хвостовой β€” компиляторы автоматичСски Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ Π΅Π΅ Ρ†ΠΈΠΊΠ»ΠΎΠΌ.

Π—Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ хвостовой ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° [7], ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°-аккумулятора, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ накапливаСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Ѐункция выполняСт вычислСния с аккумулятором Π΄ΠΎ рСкурсивного Π²Ρ‹Π·ΠΎΠ²Π°. Π₯ΠΎΡ€ΠΎΡˆΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ использования Ρ‚Π°ΠΊΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ слуТит функция вычислСния Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»Π°:
\(fact_n = n \cdot fact(n-1) \\
fact_3 = 3 \cdot fact_2 = 3 \cdot (2 \cdot fact_1) = 3\cdot (2 \cdot (1 \cdot fact_0)) = 6 \\
fact_n = factTail_ \\
\\
factTail_ = factTail(n-1, accumulator \cdot n)\\
factTail_ <3, 1>= factTail_ <2, 3>= factTail_ <1, 6>= factTail_ <0, 6>= 6
\)

Π’ качСствС Π±ΠΎΠ»Π΅Π΅ слоТного ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° рассмотрим Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ вычислСния чисСл Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ. Основная функция Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ,ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΡƒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, ΠΏΡ€ΠΈ этом ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΈ Π΄Π²Π° аккумулятора (Π΄Π²Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… числа Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ).

Ѐункция с Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Ссли рассчитано Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ количСство чисСл, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС β€” ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ счСтчик, рассчитываСт Π½ΠΎΠ²ΠΎΠ΅ число Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ рСкурсивный Π²Ρ‹Π·ΠΎΠ². ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ компиляторы ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ пСрСдаСтся Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»ΠΎΠΌ. Π’Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΈΠ΅ΠΌ особСнно Π°ΠΊΡ‚ΡƒΠ°Π»Π΅Π½ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΈ логичСских языках программирования, Ρ‚.ΠΊ. Π² Π½ΠΈΡ… программист Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ явно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ цикличСскиС конструкции.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *