Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅

ΠŸΠ΅Ρ‚Ρ. ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ Π»ΡŽΠ±ΡΡ‚ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Сю ΠΏΡ€ΠΈ записи матСматичСских Ρ„ΠΎΡ€ΠΌΡƒΠ». Π€ΠΎΡ€ΠΌΡƒΠ»Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‡Π΅Π½ΡŒ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΌΠΈ. Π₯ΠΎΡ‡Ρƒ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅Π±Π΅ эту ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΡ€ΠΈΠ²ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΡŒ Π½Π° Π΄Π²ΡƒΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ….

Π€Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»

НапримСр, 3! = 1Β·2Β·3 = 6.

Π€ΠΎΡ€ΠΌΡƒΠ»Ρƒ для Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»Π° ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

Π­Ρ‚ΠΎ обычная, Π½Π΅ рСкурсивная Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°. Π§ΠΈΡ‚Π°Π΅ΠΌ Ρ‚Π°ΠΊ: эн Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π» Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ всСх Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½Ρ‹Ρ… чисСл ΠΎΡ‚ 1 Π΄ΠΎ n ( Π²ΠΊΠ»ΡŽΡ‡Π°Ρ n).

Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ всСх Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½Ρ‹Ρ… чисСл ΠΎΡ‚ 1 Π΄ΠΎ n, ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ n Π΅ΡΡ‚ΡŒ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π» числа Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ мСньшСго n, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π» числа (n-1). ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ:

ΠžΡ‚ΡΡŽΠ΄Π° получаСтся Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°, содСрТащая Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ:

ЧитаСтся Ρ„ΠΎΡ€ΠΌΡƒΠ»Π° Ρ‚Π°ΠΊ: Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π» числа n Π΅ΡΡ‚ΡŒ 1, Ссли n=1, ΠΈΠ½Π°Ρ‡Π΅ (ΠΏΡ€ΠΈ n>1) ΠΎΠ½ Ρ€Π°Π²Π΅Π½ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»Ρƒ ΠΎΡ‚ числа (n-1) ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½Π½ΠΎΠΌΡƒ Π½Π° n.

По этой Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для исполнитСля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с числами, ΠΈ Π² БКИ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π° возвращСния числа ΠΈΠ· ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹.

КомандаКак Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚
ΠŸΠžΠšΠΠ—ΠΠ’Π¬ tΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° экранС число t β€” свой ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€.
ВЕРНУВЬ tΠ’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠ· ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ число t β€” свой ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€.

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ этой ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΎΠ½Π° обращаСтся сама ΠΊ сСбС (рСкурсия), Π½ΠΎ со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π½Π° 1 мСньшС исходного.

Π‘Π²ΠΎΠ΄ΠΈΠΌ
вычислСниС 4! ΠΊ Π²Ρ‹Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΡŽ 3!,
вычислСниС 3! ΠΊ Π²Ρ‹Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΡŽ 2!,
вычислСниС 2! ΠΊ Π²Ρ‹Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΡŽ 1!,
Π° 1! вычисляСм нСпосрСдствСнно, ΠΎΠ½ Ρ€Π°Π²Π΅Π½ 1.

РСкурсивноС ΠΏΠΎΠ³Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ выполняСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ выполнится ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅ рСкурсии (Π² нашСм случаС n=1 ), Π·Π°Ρ‚Π΅ΠΌ начинаСтся всплытиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ продолТаСтся, ΠΏΠΎΠΊΠ° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ пСрвая ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°, ΡΡ‚Π°Ρ€Ρ‚ΠΎΠ²Π°Π²ΡˆΠ°Ρ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ.

ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ

О ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Π² Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ части курса, ΠΊΠΎΠ³Π΄Π° ΡˆΡ‘Π» Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ ΠΎ Π·ΠΎΠ»ΠΎΡ‚ΠΎΠΌ сСчСнии. Π’Ρ‹ Π½Π΅ Π·Π°Π±Ρ‹Π»ΠΈ Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅?

Π₯ΡƒΠ΄ΠΎΠΆΠ½ΠΈΠΊΠΈ ΠΈ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„Ρ‹, ΡΠΊΡƒΠ»ΡŒΠΏΡ‚ΠΎΡ€Ρ‹ ΠΈ строитСли ΡΡ‚Π°Ρ€Π°ΡŽΡ‚ΡΡ Π² своих произвСдСниях ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π·ΠΎΠ»ΠΎΡ‚ΠΎΠ³ΠΎ сСчСния.

Π’ Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΈ находятся:

И ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² чСловСчСского Ρ‚Π΅Π»Π° связаны Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ Π·ΠΎΠ»ΠΎΡ‚Ρ‹ΠΌ ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ΠΌ.

Π‘ Π·ΠΎΠ»ΠΎΡ‚Ρ‹ΠΌ сСчСниСм Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ связана ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ чисСл, извСстная ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ:

ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π½Π°Π·Π²Π°Π½Π° Ρ‚Π°ΠΊ Π² Ρ‡Π΅ΡΡ‚ΡŒ ΡƒΡ‡Ρ‘Π½ΠΎΠ³ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅Ρ‘ ΠΎΡ‚ΠΊΡ€Ρ‹Π». Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ β€” это Π½Π΅ имя, Π° ΠΏΡ€ΠΎΠ·Π²ΠΈΡ‰Π΅, Π° настоящиС имя β€” Π›Π΅ΠΎΠ½Π°Ρ€Π΄ΠΎ Пизанский β€” ΠΊΡ€ΡƒΠΏΠ½Ρ‹ΠΉ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊ срСднСвСковой Π•Π²Ρ€ΠΎΠΏΡ‹, родился ΠΎΠΊΠΎΠ»ΠΎ 1170 Π³ΠΎΠ΄Π° Π² ΠΈΡ‚Π°Π»ΡŒΡΠ½ΡΠΊΠΎΠΌ Π³ΠΎΡ€ΠΎΠ΄Π΅ Пиза (этот Π³ΠΎΡ€ΠΎΠ΄, кстати, Π·Π½Π°ΠΌΠ΅Π½ΠΈΡ‚ Π΅Ρ‰Ρ‘ ΠΈ Β«ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅ΠΉΒ» пизанской башнСй, посмотритС Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅).

F 1 =1
F 2 =1
F n = F n-1 + F n-2 (для всСх n>2)

По этим Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ с ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Π΅ΠΌ:

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ этой ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΎΠ½Π° обращаСтся сама ΠΊ сСбС ΠΏΡ€ΠΈ n>2 Π΄Π²Π° Ρ€Π°Π·Π°, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π· со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π½Π° 1 мСньшС исходного, Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π· со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π½Π° 2 мСньшС исходного. Π’ΠΎΡ‚ такая двойная получаСтся рСкурсия!

РСкурсивноС ΠΏΠΎΠ³Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ выполняСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ выполнится ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅ рСкурсии ( n=1 ΠΈΠ»ΠΈ n=2 ), Π·Π°Ρ‚Π΅ΠΌ начинаСтся всплытиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ продолТаСтся, ΠΏΠΎΠΊΠ° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ пСрвая ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°, ΡΡ‚Π°Ρ€Ρ‚ΠΎΠ²Π°Π²ΡˆΠ°Ρ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ.

РСкурсивный ΠšΡƒΠΊΠ°Ρ€Π°Ρ‡Π°

ВСрнёмся ΠΎΡ‚ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ Π½Π° ΠΏΠΎΠ»Π΅ ΠšΡƒΠΊΠ°Ρ€Π°Ρ‡ΠΈ ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ.

Π‘ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠšΡƒΠΊΠ°Ρ€Π°Ρ‡Ρƒ Π²Π½ΠΈΠ· Π½Π° число ΠΊΠ»Π΅Ρ‚ΠΎΠΊ, Ρ€Π°Π²Π½ΠΎΠ΅ исходному количСству ΠΊΡƒΠ±ΠΈΠΊΠΎΠ². На рисункС ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС срСды ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Π΅ΠΉ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅.

Вася. Надо ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒ ΠΊΡƒΠ±ΠΈΠΊΠΈ, Π·Π°Ρ‚Π΅ΠΌ спустится Π²Π½ΠΈΠ·. Π’ Π³Π»Π°Π²Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ получаСтся 2 ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, пСрвая описываСтся ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ с Ρ†ΠΈΠΊΠ»ΠΎΠΌ ПОКА (количСство ΠΊΡƒΠ±ΠΈΠΊΠΎΠ² нСизвСстно), Π° вторая β€” ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ с Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠŸΠžΠ’Π’ΠžΠ Π˜ :

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρ‚Ρ‹ ΠΏΠΎΠΌΠ΅Ρ‚ΠΈΠ» послСднюю ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ Π·Π½Π°ΠΊΠΎΠΌ вопроса?

ΠŸΠ΅Ρ‚Ρ. Она Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ случаС: ΠΊΠΎΠ³Π΄Π° исходно Π½Π° ΠΏΠΎΠ»Π΅ стояло 4 ΠΊΡƒΠ±ΠΈΠΊΠ°!

Вася. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ так… Но я Π½Π΅ знаю, ΠΊΠ°ΠΊ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠšΡƒΠΊΠ°Ρ€Π°Ρ‡Ρƒ ΡΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΡƒΠ±ΠΈΠΊΠΈ!

На этапС всплытия ΠšΡƒΠΊΠ°Ρ€Π°Ρ‡Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Ρ‹ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ всСх ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ Π’ΠΠ˜Π— :

Вася. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ! Π’Π°ΠΊ ΠΊΠ°ΠΊ количСство ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ Π’ΠΠ˜Π— Ρ€Π°Π²Π½ΠΎ числу ΠΊΡƒΠ±ΠΈΠΊΠΎΠ², ΠšΡƒΠΊΠ°Ρ€Π°Ρ‡Π° Ρ‚ΠΎΡ‡Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ условиС Π·Π°Π΄Π°Ρ‡ΠΈ.

ΠŸΠ΅Ρ‚Ρ. ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ Бпуск ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΡ€ΠΎΡ‡Π΅:

РСкурсивноС ΠΏΠΎΠ³Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ заканчиваСтся, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒ ΡˆΠ°Π³Π°Π΅Ρ‚ Π² ΠΏΡƒΡΡ‚ΡƒΡŽ ΠΊΠ»Π΅Ρ‚ΠΊΡƒ. УсловиС Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π•Π‘Π›Π˜ становится Π»ΠΎΠΆΠ½Ρ‹ΠΌ, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ, ΠΈ начинаСтся рСкурсивноС всплытиС:

Вася. Π”ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈ такая запись:

ΠŸΠ΅Ρ‚Ρ. Π’ этом Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ Π’ΠΠ˜Π— выполнится Π½Π° ΠΎΠ΄Π½Ρƒ большС, Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½ΠΎ. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈ:

Вася. Π”Π°, Π²Π΅Ρ€Π½ΠΎ. Один Ρ€Π°Π· ΠΊΠΎΠΌΠ°Π½Π΄Π° Π’ΠΠ˜Π— сработаСт Π½Π° этапС погруТСния, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΠΏΡƒΡΡ‚ΡƒΡŽ ΠΊΠ»Π΅Ρ‚ΠΊΡƒ ( Бпуск ΡƒΠΆΠ΅ Π½Π΅ вызываСтся).

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ, ΠšΡƒΠΊΠ°Ρ€Π°Ρ‡Π° ΡˆΠ°Π³Π½Ρ‘Ρ‚ Π²Π½ΠΈΠ· Π΄Π°ΠΆΠ΅ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π½Π° ΠΏΠΎΠ»Π΅ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π½Π΅Ρ‚ ΠΊΡƒΠ±ΠΈΠΊΠΎΠ².

ΠŸΠ΅Ρ‚Ρ. Π’Π°ΠΊΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ кодирования Ρ‚ΠΎΠΆΠ΅ Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π΅Π½. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΡ€ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ.

Вася. Π”ΡƒΠΌΠ°ΡŽ, Π·Π°Π΄Π°Ρ‡Π° Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ Ρ‚Π°ΠΊΠΈΠΌ рСкурсивным ΠΊΠΎΠ΄ΠΎΠΌ:

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

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

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

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

РСкурсия достаточно распространённоС явлСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ встрСчаСтся Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² областях Π½Π°ΡƒΠΊΠΈ, Π½ΠΎ ΠΈ Π² повсСднСвной ΠΆΠΈΠ·Π½ΠΈ. НапримСр, эффСкт ДростС, Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ БСрпинского ΠΈ Ρ‚. Π΄. Один ΠΈΠ· Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ – это навСсти 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.

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅

РСкурсия β€” это способ опрСдСлСния мноТСства ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· само это мноТСство Π½Π° основС Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… простых Π±Π°Π·ΠΎΠ²Ρ‹Ρ… случаСв.

РСкурсивная ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° (функция) β€” это ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° (функция), которая Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ сама сСбя Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

РСкурсия β€” это ΡˆΠΈΡ€ΠΎΠΊΠΎ распространённый ΠΌΠ΅Ρ‚ΠΎΠ΄, понятный ΠΈ Π±Π΅Π· матСматичСской Ρ„ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ Π±Π»ΠΈΠ·ΠΊΠΈΠΉ Π»ΡŽΠ±ΠΎΠΌΡƒ Β«Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ с ΡƒΠ»ΠΈΡ†Ρ‹Β».

Для рСкурсии Π² Π΅Ρ‘ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰Π΅ΠΉ, Π½Π΅ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ Ρ‚ΠΈΠΏΠΈΡ‡Π½Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ отсрочки Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… дСйствий; см., Π² частности, ΠΏΡ€ΠΈΠΌΠ΅Ρ€ (4). По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ ΠΎΠ½Π° вряд Π»ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° для Π·Π°Π±Ρ‹Π²Ρ‡ΠΈΠ²Ρ‹Ρ… людСй, Π½ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Π° для подходящим ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½Π½Ρ‹Ρ… машин. ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠ΅ ΠΆΠ΅ β€” это Π² Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ стСпСни наш повсСднСвный ΠΎΠΏΡ‹Ρ‚. см. 3, 4, 6. Бауэр Π“ΠΎΠΎΠ·

3.2. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1. Вспомним ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½Ρ‹Ρ… чисСл. Оно состоит ΠΈΠ· Π΄Π²ΡƒΡ… частСй:

1. 1 β€” Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΎΠ΅ число;

2. Ссли n β€” Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΎΠ΅ число, Ρ‚ΠΎ n + 1 β€” Ρ‚ΠΎΠΆΠ΅ Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΎΠ΅ число.

Вторая Ρ‡Π°ΡΡ‚ΡŒ этого опрСдСлСния Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ называСтся ΠΈΠ½Π΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ: Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΎΠ΅ число опрСдСляСтся Ρ‡Π΅Ρ€Π΅Π· Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΎΠ΅ число, ΠΈ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ опрСдСляСтся всё мноТСство Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½Ρ‹Ρ… чисСл. Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ этот ΠΏΡ€ΠΈΡ‘ΠΌ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ рСкурсиСй.

ΠŸΠ΅Ρ€Π²Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½Ρ‹Ρ… чисСл β€” это ΠΈ Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΡ‚ самый Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ случай. Если ΡƒΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠ· опрСдСлСния, ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΏΠΎΠ»Π½ΠΎ: вторая Ρ‡Π°ΡΡ‚ΡŒ Π΄Π°Ρ‘Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ, Π½ΠΎ Π½Π΅ Π΄Π°Ρ‘Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Β«Π·Π°Ρ†Π΅ΠΏΠΊΠΈΒ», Π½Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π½Π° вопрос Β«ΠΎΡ‚ΠΊΡƒΠ΄Π° Π½Π°Ρ‡Π°Ρ‚ΡŒΒ».

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3. ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ рСкурсивных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² β€” Ρ„Ρ€Π°ΠΊΡ‚Π°Π»Ρ‹. Π’Π°ΠΊ Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ гСомСтричСскиС Ρ„ΠΈΠ³ΡƒΡ€Ρ‹, ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰ΠΈΠ΅ самоподобиСм. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ составлСны ΠΈΠ· Ρ„ΠΈΠ³ΡƒΡ€ мСньшСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Ρ†Π΅Π»ΠΎΠΉ Ρ„ΠΈΠ³ΡƒΡ€Π΅. На рисункС 8.2 ΠΏΠΎΠΊΠ°Π·Π°Π½ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ БСрпинского β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Ρ„Ρ€Π°ΠΊΡ‚Π°Π»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ» Π² 1915 Π³. польский ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊ Π’. БСрпинский. Рис. 8.2

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅

Равносторонний Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ дСлится Π½Π° 4 Ρ€Π°Π²Π½Ρ‹Ρ… Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° мСньшСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π° (см. рис. 8.2, слСва), Π·Π°Ρ‚Π΅ΠΌ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠ², ΠΊΡ€ΠΎΠΌΠ΅ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ, снова дСлится Π½Π° 4 Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΡ… Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° ΠΈ Ρ‚. Π΄. На рисункС 8.2 справа ΠΏΠΎΠΊΠ°Π·Π°Π½ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ БСрпинского с трСмя уровнями дСлСния.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 4. Π₯анойскиС башни.

Богласно Π»Π΅Π³Π΅Π½Π΄Π΅, ΠΊΠΎΠ½Π΅Ρ† свСта наступит Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠ½Π°Ρ…ΠΈ Π’Π΅Π»ΠΈΠΊΠΎΠ³ΠΎ Ρ…Ρ€Π°ΠΌΠ° Π³ΠΎΡ€ΠΎΠ΄Π° БСнарас смогут ΠΏΠ΅Ρ€Π΅Π»ΠΎΠΆΠΈΡ‚ΡŒ 64 диска Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΌΠ΅Ρ‚Ρ€Π° с ΠΎΠ΄Π½ΠΎΠ³ΠΎ стСрТня Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ. Π’Π½Π°Ρ‡Π°Π»Π΅ всС диски Π½Π°Π½ΠΈΠ·Π°Π½Ρ‹ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΡΡ‚Π΅Ρ€ΠΆΠ΅Π½ΡŒ. Π—Π° ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ диск, ΠΏΡ€ΠΈΡ‡Ρ‘ΠΌ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ ΠΊΠ»Π°ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ мСньший диск Π½Π° больший. Π•ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΡΡ‚Π΅Ρ€ΠΆΠ΅Π½ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ (рис. 8.3).

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅

Π Π΅ΡˆΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ для 2, 3 ΠΈ Π΄Π°ΠΆΠ΅ 4 дисков довольно просто. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ для любого числа дисков.

ΠŸΡƒΡΡ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎ пСрСнСсти n дисков со стСрТня 1 Π½Π° ΡΡ‚Π΅Ρ€ΠΆΠ΅Π½ΡŒ 3. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ сСбС, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΊΠ°ΠΊ-Ρ‚ΠΎ смогли ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ n – 1 дисков Π½Π° Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΡΡ‚Π΅Ρ€ΠΆΠ΅Π½ΡŒ 2. Π’ΠΎΠ³Π΄Π° остаСтся пСрСнСсти самый большой диск Π½Π° ΡΡ‚Π΅Ρ€ΠΆΠ΅Π½ΡŒ 3, Π° Π·Π°Ρ‚Π΅ΠΌ n β€” 1 ΠΌΠ΅Π½ΡŒΡˆΠΈΡ… дисков со Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ стСрТня 2 Π½Π° ΡΡ‚Π΅Ρ€ΠΆΠ΅Π½ΡŒ 3, ΠΈ Π·Π°Π΄Π°Ρ‡Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅ΡˆΠ΅Π½Π°. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ Ρ‚Π°ΠΊΠΎΠΉ псСвдокод:

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° пСрСнСсти (ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π°ΠΌ прСдстоит Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ) ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚Ρ€ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°: число дисков, Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ стСрТни. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ свСли Π·Π°Π΄Π°Ρ‡Ρƒ пСрСноса n дисков ΠΊ Π΄Π²ΡƒΠΌ Π·Π°Π΄Π°Ρ‡Π° пСрСноса n – 1 дисков ΠΈ ΠΎΠ΄Π½ΠΎΠΌΡƒ элСмСнтарному Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ β€” пСрСносу 1 диска. Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ извСстных Π½ΠΎΠΌΠ΅Ρ€Π°Ρ… Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ стСрТнСй Π»Π΅Π³ΠΊΠΎ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ сумма Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² Ρ€Π°Π²Π½Π° 1 + 2 + 3 = 6. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ такая (ΠΏΠΎΠΊΠ° Π½Π΅ совсСм вСрная) ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°:

Π°Π»Π³ Hanoi (Ρ†Π΅Π» ΠΏ, ΠΊ, m )

Π­Ρ‚Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ сама сСбя, Π½ΠΎ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ значСниями ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². Вакая ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° называСтся рСкурсивной.

РСкурсивная ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° (функция) β€” это ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° (функция), которая Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ сама сСбя Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Основная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с Ρ‡Π΅Ρ‚Ρ‹Ρ€ΡŒΠΌΡ дисками Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ всСго ΠΎΠ΄Π½Ρƒ строку (пСрСнСсти 4 диска со стСрТня 1 Π½Π° ΡΡ‚Π΅Ρ€ΠΆΠ΅Π½ΡŒ 3):

Если Π²Ρ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΎΠ½Π° зациклится, Ρ‚. Π΅. Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ бСсконСчно Π΄ΠΎΠ»Π³ΠΎ. Π’ Ρ‡Ρ‘ΠΌ ΠΆΠ΅ Π΄Π΅Π»ΠΎ? ВспомнитС, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ рСкурсивного ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° состоит ΠΈΠ· Π΄Π²ΡƒΡ… частСй. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΎΠ΅ число), ΠΈΠΌΠ΅Π½Π½ΠΎ эта Ρ‡Π°ΡΡ‚ΡŒ Β«ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚Β» Π·Π° остановку рСкурсии Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Пока ΠΌΡ‹ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ Ρ‚Π°ΠΊΠΎΠ΅ условиС останова, ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π±ΡƒΠ΄Π΅Ρ‚ бСсконСчно Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ саму сСбя (это ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, выполняя ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΏΠΎ шагам). Когда ΠΆΠ΅ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ?

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Ссли Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π»ΠΎΠΆΠΈΡ‚ΡŒ 0 дисков, Π·Π°Π΄Π°Ρ‡Π° ΡƒΠΆΠ΅ Ρ€Π΅ΡˆΠ΅Π½Π°, Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ Π½Π°Π΄ΠΎ. Π­Ρ‚ΠΎ ΠΈ Π΅ΡΡ‚ΡŒ условиС окончания рСкурсии: Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΏ, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅, Ρ€Π°Π²Π½ΠΎ 0, Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ дСйствий. Для этого Π² школьном алгоритмичСском языкС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Ρ‹Ρ…ΠΎΠ΄ (Π² ПаскалС β€” ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ exit ). ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ вСрсия ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ выглядит Ρ‚Π°ΠΊ:

procedure Hanoi (n,k,m:integer);

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π»ΠΎΠΆΠΈΡ‚ΡŒ N дисков, Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ 2 N β€” 1 ΠΏΠ΅Ρ€Π΅ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π½ΠΈΠΉ. Для N = 64 это число Ρ€Π°Π²Π½ΠΎ 18 446 744 073 709 551 615. Если Π±Ρ‹ ΠΌΠΎΠ½Π°Ρ…ΠΈ, работая дСнь ΠΈ Π½ΠΎΡ‡ΡŒ, ΠΊΠ°ΠΆΠ΄ΡƒΡŽ сСкунду ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π»ΠΈ ΠΎΠ΄ΠΈΠ½ диск, ΠΈΠΌ Π±Ρ‹ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ 580 ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄ΠΎΠ² Π»Π΅Ρ‚.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 5. Боставим ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ, которая ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΎΠ΅ число Π² Π΄Π²ΠΎΠΈΡ‡Π½ΡƒΡŽ систСму. ΠœΡ‹ ΡƒΠΆΠ΅ занимались Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ этой Π·Π°Π΄Π°Ρ‡ΠΈ, Π³Π΄Π΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ вывСсти 8-Π±ΠΈΡ‚Π½ΡƒΡŽ запись числа ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° 0..255, сохранив Π»ΠΈΠ΄ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Π½ΡƒΠ»ΠΈ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ услоТним Π·Π°Π΄Π°Ρ‡Ρƒ: Π»ΠΈΠ΄ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Π½ΡƒΠ»ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ, Π° Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΎΠ΅ число ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹ΠΌ (Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… допустимого Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° для Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…).

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° числа Π² Π΄Π²ΠΎΠΈΡ‡Π½ΡƒΡŽ систСму ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊ:

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ число выводится Β«Π·Π°Π΄ΠΎΠΌ Π½Π°ΠΏΠ΅Ρ€Ρ‘Π΄Β», Ρ‚. Π΅. ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ послСдний разряд. Как Β«ΠΏΠ΅Ρ€Π΅Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΒ» число?

Π•ΡΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ способы Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сводятся ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ остатки ΠΎΡ‚ дСлСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² символьной строкС) ΠΈ Π·Π°Ρ‚Π΅ΠΌ, ΠΊΠΎΠ³Π΄Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½, вывСсти Π΅Π³ΠΎ Π½Π° экран.

Π’Π°ΠΊΠΎΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΎΡ‡Π΅Π½ΡŒ просто программируСтся:

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту Π·Π°Π΄Π°Ρ‡Ρƒ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Π°ΠΆΠ½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄: рСкурсия замСняСт Ρ†ΠΈΠΊΠ». ΠŸΡ€ΠΈ этом ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, становится Π±ΠΎΠ»Π΅Π΅ понятной.

Π°Π»Π³ Ρ†Π΅Π» sumDig( Ρ†Π΅Π» n)

sum:=sum+sumDig (n div 10);

Алгоритм Π•Π²ΠΊΠ»ΠΈΠ΄Π°. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΠžΠ” Π΄Π²ΡƒΡ… Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½Ρ‹Ρ… чисСл, Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΠ· большСго числа мСньшСС Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° мСньшСС Π½Π΅ станСт Ρ€Π°Π²Π½ΠΎ Π½ΡƒΠ»ΡŽ. Π’ΠΎΠ³Π΄Π° Π²Ρ‚ΠΎΡ€ΠΎΠ΅ число ΠΈ Π΅ΡΡ‚ΡŒ ΠΠžΠ” исходных чисСл.

Π°Π»Π³ Ρ†Π΅Π» NOD( Ρ†Π΅Π» a, b)

Ссли Π°=0 ΠΈΠ»ΠΈ b =0 Ρ‚ΠΎ

ΠΈΠ½Π°Ρ‡Π΅ Π·Π½Π°Ρ‡ :=N0D(a, b-a)

function NOD(a, b:integer):integer

if (a=0) or (b=0) then begin

БущСствуСт ΠΈ Π±ΠΎΠ»Π΅Π΅ быстрый Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π•Π²ΠΊΠ»ΠΈΠ΄Π° (ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ большСС число замСняСтся Π½Π° остаток ΠΎΡ‚ дСлСния большСго числа Π½Π° мСньшСС.

Рассмотрим Π΅Ρ‰Ρ‘ нСсколько Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ рСкурсии:

1. Алгоритм слоТСния Π΄Π²ΡƒΡ… ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… дСсятичных чисСл.

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

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС количСство элСмСнтарных Ρ‚Π°ΠΊΡ‚ΠΎΠ² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ зависит ΠΎΡ‚ разрядности большСго слагаСмого.

2. Алгоритмы разлоТСния Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ числа Π½Π° простыС ΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»ΠΈ.

Если ΠΆΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ простых чисСл Π² распоряТСнии Π½Π΅Ρ‚, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π΄Π΅Π»ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ число Π½Π° Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½Ρ‹Π΅ числа 2, 3, 4, 5, 6, 7. Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ останСтся 1; ΠΏΡ€ΠΈ этом для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ составного числа ΠΊΠ°ΠΊ дСлитСля выполняСмая ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° дСлСния Π±ΡƒΠ΄Π΅Ρ‚ бСсполСзной.

ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ счётС Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΉ даст Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ΅ Ρ€Π°Π·Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° простыС ΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»ΠΈ.

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС количСство элСмСнтарных Ρ‚Π°ΠΊΡ‚ΠΎΠ² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ зависит ΠΎΡ‚ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ Ρ€Π°Π·Π»Π°Π³Π°Π΅ΠΌΠΎΠ³ΠΎ числа.

3. Алгоритм вставки ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ Π² (ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡Π΅Π½Π½ΡƒΡŽ) ΠΊΠ°Ρ€Ρ‚ΠΎΡ‚Π΅ΠΊΡƒ (прСдполагаСтся, Ρ‡Ρ‚ΠΎ Π² ΠΊΠ°Ρ€Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅ Π½Π΅Ρ‚ Ρ€Π΅ΠΉΡ‚Π΅Ρ€Π° – Π·Π°ΠΆΠΈΠΌΠ° для удобства отыскания ΠΊΠ°Ρ€Ρ‚ΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ).

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

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС количСство элСмСнтарных Ρ‚Π°ΠΊΡ‚ΠΎΠ² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ зависит ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΊΠ°Ρ€Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ

4. Алгоритм сортировки (нСсортированной) ΠΊΠ°Ρ€Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ.

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° пустой ΠΈΠ»ΠΈ одноэлСмСнтной ΠΊΠ°Ρ€Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Π°. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС стопка ΠΊΠ°Ρ€Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ разбиваСтся Π½Π° Π΄Π²Π΅ нСпустыС части, каТдая ΠΈΠ· частСй нСзависимо сортируСтся, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΠ±Π΅ сортированныС стопки Β«ΡΠΌΠ΅ΡˆΠΈΠ²Π°ΡŽΡ‚ΡΡΒ» Π² ΠΎΠ΄Π½Ρƒ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‚Π΅ΠΊΡƒ.

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

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ дСмонстрируСт ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ структуру: Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ сортировки основан Π½Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ смСшивания.

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС количСство элСмСнтарных Ρ‚Π°ΠΊΡ‚ΠΎΠ² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ зависит ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΊΠ°Ρ€Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ.

5. Алгоритм вычислСния значСния Π΄Ρ€ΠΎΠ±ΠΈ (Π° + b )/(Π° β€” b ).

Π‘Π½Π°Ρ‡Π°Π»Π° вычисляСм (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ слоТСния ΠΈ вычитания) значСния Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π° + b ΠΈ Π° β€” b (всС Ρ€Π°Π²Π½ΠΎ, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ»ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ситуация здСсь совмСстная), Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ частноС ΠΎΡ‚ дСлСния ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ дСлСния).

Π’ случаС ΠΎΠ±Ρ‰ΠΈΡ… Ρ„ΠΎΡ€ΠΌΡƒΠ» обнаруТиваСтся ΠΊΠ°ΠΊ иСрархичСскоС строСниС, Ρ‚Π°ΠΊ ΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚Π½ΠΎΡΡ‚ΡŒ.

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС количСство элСмСнтарных Ρ‚Π°ΠΊΡ‚ΠΎΠ² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ бСсконСчно.

6. Алгоритм, Ρ€Π°ΡΠΏΠΎΠ·Π½Π°ΡŽΡ‰ΠΈΠΉ, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π·Π½Π°ΠΊΠΎΠ² Π° ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π·Π½Π°ΠΊΠΎΠ² b посрСдством вычёркивания Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π½Π°ΠΊΠΎΠ².

7. Алгоритм вычислСния числа Π΅ (Ρ‚. Π΅. вычислСния ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π΄Ρ€ΠΎΠ±Π΅ΠΉ β€” ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠΉ для Π΅).

ОснованиС Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½Ρ‹Ρ… Π»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌΠΎΠ² Π΅ ΠΈΡ€Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ, поэтому Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ бСсконСчной ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… чисСл, всё Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ°ΡŽΡ‰ΠΈΡ… Π΅. По Π›Π°ΠΌΠ±Π΅Ρ€Ρ‚Ρƒ (1766 Π³.) Ρ‚Π°ΠΊΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

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

РСкурсия. Π‘Π΅Π³Π»Ρ‹ΠΉ взгляд

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅

НиТС Ρ€Π΅Ρ‡ΡŒ ΠΏΠΎΠΉΠ΄Ρ‘Ρ‚ ΠΎ ΡΡ‚Π°Ρ€ΡƒΡˆΠΊΠ΅ рСкурсии, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ Π±Ρ‹ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ, ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Данная нСбольшая ΡΡ‚Π°Ρ‚ΡŒΡ написана для Π±Π΅Π³Π»ΠΎΠ³ΠΎ ознакомлСния с рСкурсиСй, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ Π΅Ρ‘ примСнСния ΠΈ опасностями.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅

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

Бамая большая Π³Π»ΡƒΠΏΠΎΡΡ‚ΡŒ β€” это Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС ΠΈ Π½Π°Π΄Π΅ΡΡ‚ΡŒΡΡ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

Под рСкурсиСй ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ процСсс повторСния элСмСнтов самоподобным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ рСкурсиСй, Ссли ΠΎΠ½ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ самого сСбя.

Частным случаСм рСкурсии являСтся хвостовая рСкурсия. Если любой рСкурсивный Π²Ρ‹Π·ΠΎΠ² являСтся послСднСй ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΠ΅Ρ€Π΅Π΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΎΠΌ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΎ это ΠΎΠ½ΠΎ.

НСкоторыС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

Π Π΅ΠΊΡƒΡ€ΡΠΈΡŽ Π½Π°Π΄ΠΎ Π±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ для этого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ Ρ…ΡƒΠΆΠ΅, Ρ‡Π΅ΠΌ наглядныС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹. Для Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ понимания, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, всё ΠΆΠ΅ слСдуСт ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, снова ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ снова ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° примСр… ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΡ€ΠΈΠ΄Ρ‘Ρ‚ осознаниС.

ΠžΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Ρ‚ΡƒΡ‚.

Π‘Π°ΠΌΠΎΠ΅ извСстноС программисту ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ рСкурсии β€” Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° вычислСниС чисСл Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ ΠΈΠ»ΠΈ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»Π°. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ это Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° языкС C:

Π’ΡƒΡ‚ ΠΆΠ΅ стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ дСкларативная ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ°, Π² частности ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ° логичСского программирования, Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ позволяСт ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚Π°ΠΌ это ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ Π΄Π΅Π»ΠΎ.

Fork-Π±ΠΎΠΌΠ±Π°
ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: РСкурсивноС созданиС процСссов ΠΊΡ€Π°ΠΉΠ½Π΅ быстро (ΠΈΠ·-Π·Π° ΡΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ роста ΠΈΡ… количСства) заполняСт Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ процСссов, Ρ‡Ρ‚ΠΎ достаточно опасно для систСмы.

Reboot ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ послС Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ приятно.

Для ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° ΠΏΠ΅Ρ€Π²ΠΎΠΉ ассоциациСй, скорСС всСго, Π±ΡƒΠ΄Π΅Ρ‚ Ρ„Ρ€Π°ΠΊΡ‚Π°Π». Π€Ρ€Π°ΠΊΡ‚Π°Π»Ρ‹ прСкрасны ΠΈ приятно для Π³Π»Π°Π·Π° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ свойства самоподобия.

Π‘Π°ΠΌΡ‹Π΅ извСстныС Ρ„Ρ€Π°ΠΊΡ‚Π°Π»Ρ‹:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅

Ну ΠΈ Π² повсСднСвной ΠΆΠΈΠ·Π½ΠΈ классичСским ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄Π²Π° Π·Π΅Ρ€ΠΊΠ°Π»Π°, поставлСнных Π΄Ρ€ΡƒΠ³ Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ² Π΄Ρ€ΡƒΠ³Π°.

Углубимся Π³Π»ΡƒΠ±ΠΆΠ΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅

ΠŸΡ€ΠΎΡΡ‚Π° Π»ΠΈ рСкурсия? ΠžΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ Π½Π΅Ρ‚. На Π²ΠΈΠ΄ каТСтся, Ρ‡Ρ‚ΠΎ всё просто, ΠΎΠ΄Π½Π°ΠΊΠΎ рСкурсия Ρ‚Π°ΠΈΡ‚ Π² сСбС опасности (А ΠΈΠ½ΠΎΠ³Π΄Π° ΠΎΠ½Π° просто Π½Π΅ понятна).

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

Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π΅Ρ€Π΅Π²ΠΎ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² получится большим, Π½ΠΎ максимальноС количСство Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π² стСкС Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ мСньшС (N-1 ΠΏΡ€ΠΈ N > 2, соотвСтствСнно).

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсия Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅

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

Помимо этого Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ Π₯анойскиС башни, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡƒΡ‚ для ознакомлСния с рСкурсивными Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ. На Π₯Π°Π±Ρ€Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π±Ρ‹Π» ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ Ρ€Π°Π·Π±ΠΎΡ€ этой ΠΈΠ³Ρ€Ρ‹.

Для ΠΏΠΎΠ»Π½ΠΎΡ‚Ρ‹ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρ‹ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°Π΄ΠΎ ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ ΠΎ Π±ΠΎΡ€ΡŒΠ±Π΅ с рСкурсиСй.

ΠŸΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ΡΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Но это Π½Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ с Π½Π΅ΠΉ просто Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±ΠΎΡ€ΠΎΡ‚ΡŒΡΡ, вСдь ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ рСкурсии ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Π΅Π΅, ΠΏΡ€ΠΎΡ‰Π΅ ΠΈ приятнСС, Ρ‡Π΅ΠΌ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹.

Под силу Π»ΠΈ ΠΏΠΎΠ±ΠΎΡ€ΠΎΡ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ?

ΠžΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ Π΄Π°. Π›ΡŽΠ±ΠΎΠΉ рСкурсивный Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±Π΅Π· использования рСкурсии, Π° Ρ…Π²ΠΎΡΡ‚ΠΎΠ²ΡƒΡŽ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ ΠΆΠ΅ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ пСрСвСсти Π½Π° ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ (Ρ‡Π΅ΠΌ ΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ компиляторы для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ). Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ относится ΠΈ ΠΊ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌ.

Π‘Π°ΠΌΡ‹ΠΉ извСстный способ β€” это использованиС стСка. Π—Π΄Π΅ΡΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅, для ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΡ…ΡΡ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Бпасибо Π·Π° ΠΏΡ€ΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ. НадСюсь, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹Ρ… с рСкурсиСй ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ прСдставлСниС ΠΎ Π½Π΅ΠΉ, Π° ΠΎΡ‚ Π·Π½Π°ΡŽΡ‰ΠΈΡ… людСй, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, хочСтся ΡƒΡΠ»Ρ‹ΡˆΠ°Ρ‚ΡŒ дополнСния ΠΈ замСчания Π² коммСнтариях. НС Π±ΠΎΠΉΡ‚Π΅ΡΡŒ рСкурсии ΠΈ Π½Π΅ пСрСполняйтС стСк!

UPD: Π”ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ хвостовой рСкурсии.

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

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

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