Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсивныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅

Pascal: ЗанятиС β„– 14. РСкурсия Π² ПаскалС

РСкурсия

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсивныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсивныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсивныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсивныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсивныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅
Если Π² Ρ‚Π΅Π»Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ встрСчаСтся Π²Ρ‹Π·ΠΎΠ² самой этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΎ это ΠΈ Π΅ΡΡ‚ΡŒ рСкурсия.

Π Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΠΎΡΡ‚ΡŒΡŽ Π² ПаскалС ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚Π°ΠΊ ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹.

По сути, рСкурсия ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ бСсконСчной. Но, ΠΊΠ°ΠΊ ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, ΠΎΠ½Π° обязана Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ своСй Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π·Π° Π½Π΅ΠΊΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ количСство ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

Рассмотрим простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования рСкурсивной ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹:

procedure row(n:integer); begin if n >=1 then begin write (n, ‘ ‘); row(n-1) end; end; begin row(10); end.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим Π±ΠΎΠ»Π΅Π΅ слоТный ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования рСкурсии Π² Паскаль.

procedure reverse (n: integer); begin write (n mod 10); if (n div 10) <> 0 then reverse(n div 10) end; begin writeln; reverse(3078); end.

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ посмотрим, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ рСкурсия ΠΏΡ€ΠΈ вычислСнии Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»Π° Π² Паскаль.

Подсказка:
2!=2*1=2
3!=3*2*1=6
Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρƒ a!=a*((a-1)!)
Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсивныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсивныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсивныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсивныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсивныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅

Для чисСл 3430 ΠΈ 1365:

остаток ΠΎΡ‚ дСлСния 3430 Π½Π° 13653430 mod 1365 = 700
остаток Π½Π΅ Ρ€Π°Π²Π΅Π½ Π½ΡƒΠ»ΡŽ, ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠΌ Ρ‚ΠΎ ΠΆΠ΅ дСйствиС, подставив вмСсто ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ числа Π²Ρ‚ΠΎΡ€ΠΎΠ΅, Π° вмСсто Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ – остаток1365 mod 700 = 665
остаток Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ Π½ΡƒΠ»ΡŒ, поэтому Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ Π΄Π΅Π»Π΅Π½ΠΈΠ΅700 mod 665 = 35
остаток Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ Π½ΡƒΠ»ΡŒ, поэтому Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ Π΄Π΅Π»Π΅Π½ΠΈΠ΅665 mod 35 = 0
остаток Π½ΡƒΠ»ΡŒΠΠžΠ” Ρ€Π°Π²Π΅Π½ 35

ΠŸΠΎΡ‚Ρ€Π΅Π½ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ Π² Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ Π·Π°Π΄Π°Ρ‡ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅, Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ² ΠΏΠΎ ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅:

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

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

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽ Π²Π°ΡˆΠ΅ΠΌΡƒ вниманию ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠΈ 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Β».

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

Π•Π“Π­ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ° 16 Π·Π°Π΄Π°Π½ΠΈΠ΅ Ρ€Π°Π·Π±ΠΎΡ€

16-Π΅ Π·Π°Π΄Π°Π½ΠΈΠ΅: «ВычислСниС Ρ€Π΅ΠΊΡƒΡ€Ρ€Π΅Π½Ρ‚Π½Ρ‹Ρ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉΒ»
Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ слоТности β€” ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Ρ‹ΠΉ,
ВрСбуСтся использованиС спСциализированного ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния β€” Π½Π΅Ρ‚,
ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π±Π°Π»Π» β€” 1,
ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎΠ΅ врСмя выполнСния β€” 9 ΠΌΠΈΠ½ΡƒΡ‚.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌΡ‹Π΅ элСмСнты содСрТания: ВычислСниС Ρ€Π΅ΠΊΡƒΡ€Ρ€Π΅Π½Ρ‚Π½Ρ‹Ρ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

«Π”ля ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ выполнСния этого задания слСдуСт Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎ произвСсти трассировку
ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ рСкурсивной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ»

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΈΡ… ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΡŽ:

«ΠšΡ€Π°ΠΉΠ½Π΅ Π²Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Π½ΡƒΠΆΠ½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ для
ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ рСкурсивного Π²Ρ‹Π·ΠΎΠ²Π°»

ОбъяснСниС Ρ‚Π΅ΠΌΡ‹ «РСкурсивныС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΒ»

Для Π½Π°Ρ‡Π°Π»Π°, Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ опрСдСлСния.

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

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

var x,y:integer; procedure Sum(x,y:integer); begin //3. Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ сумму Π΄Π²ΡƒΡ… Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½Ρ‹Ρ… чисСл write(x+y); end; begin // 1. Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌ Π΄Π²Π° числа readln(x,y); // 2. ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½Ρ‹Π΅ числа Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ Sum(x,y) end.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ, пСрСйдя ΠΏΠΎ ссылкС.

procedure row(n:integer); begin if n >=1 then begin write (n, ‘ ‘); row(n-1) end; end; begin row(10); end.

Для использования рСкурсии, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ:

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС Ρ€Π°Π±ΠΎΡ‚Ρ‹ с рСкурсивными ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°ΠΌΠΈ ΠΈ функциями Π² ПаскалС ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ здСсь.

РСшСниС Π·Π°Π΄Π°Π½ΠΈΠΉ 16 Π•Π“Π­ ΠΏΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅

ΠŸΠ»Π΅ΠΉΠ»ΠΈΡΡ‚ Π²ΠΈΠ΄Π΅ΠΎΡ€Π°Π·Π±ΠΎΡ€ΠΎΠ² задания Π½Π° YouTube: Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсивныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсивныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсивныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсивныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ рСкурсивныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅
Π—Π°Π΄Π°Π½ΠΈΠ΅ дСмонстрационного Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° 2022 Π³ΠΎΠ΄Π° ЀИПИ

РСшСниС ΠΏΠΎ Ρ€Π΅ΠΊΡƒΡ€Ρ€Π΅Π½Ρ‚Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅

Π§Π΅ΠΌΡƒ Ρ€Π°Π²Π½Π° сумма Ρ†ΠΈΡ„Ρ€ значСния F(18)?

✍ РСшСниС:

def F( n ): if n == 1: return 1 elif (n >= 2): return F(n-1)+3*G(n-1) def G( n ): if n == 1: return 1 elif (n >= 2): return F(n-1)-2*G(n-1) res = F(18) s = 0 while res > 0: s += res%10 res = res // 10 print(s)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: 46

Алгоритм вычислСния значСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ F(n), Π³Π΄Π΅ n – Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΎΠ΅ число, Π·Π°Π΄Π°Π½ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΠΌΠΈ:

Π§Π΅ΠΌΡƒ Ρ€Π°Π²Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ F(5)? Π’ ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π·Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†Π΅Π»ΠΎΠ΅ число.

✍ РСшСниС:

def F( n ): if n == 1: return 1 elif (n > 1): return F(n-1)*(n+2) print (F(5))

✎ РСшСниС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ с ΠΊΠΎΠ½Ρ†Π° ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: 840

Алгоритм вычислСния значСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ F(n), Π³Π΄Π΅ n – Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΎΠ΅ число, Π·Π°Π΄Π°Π½ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΠΌΠΈ:

Π§Π΅ΠΌΡƒ Ρ€Π°Π²Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ F(6)? Π’ ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π·Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†Π΅Π»ΠΎΠ΅ число.

✍ РСшСниС:

✎ РСшСниС 2. ΠœΠ΅Ρ‚ΠΎΠ΄ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ с ΠΊΠΎΠ½Ρ†Π° ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: 99

РСшСниС Π΄Π°Π½Π½ΠΎΠ³ΠΎ задания 16 Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ΠΎΡƒΡ€ΠΎΠΊΠ΅:

Алгоритм вычислСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ F(n) ΠΈ G(n), Π³Π΄Π΅ n – Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΎΠ΅ число, Π·Π°Π΄Π°Π½ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΠΌΠΈ:

Π§Π΅ΠΌΡƒ Ρ€Π°Π²Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ F(5)/G(5)?
Π’ ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π·Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†Π΅Π»ΠΎΠ΅ число.

Π§Ρ‚ΠΎ Π²Π΅Ρ€Π½Π΅Ρ‚ функция. Бколько символов Β«Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠ°Β». Какова сумма чисСл

16_9: Π•Π“Π­ ΠΏΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ 2020 Π·Π°Π΄Π°Π½ΠΈΠ΅ 1 (Π‘Π°ΠΌΡ‹Π»ΠΊΠΈΠ½Π° Н.Н., Биницкая И.Π’., Π‘ΠΎΠ±ΠΎΠ»Π΅Π²Π° Π’.Π’., «ВСматичСскиС Ρ‚Ρ€Π΅Π½ΠΈΡ€ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ задания»):

Π§Ρ‚ΠΎ Π²Π΅Ρ€Π½Π΅Ρ‚ функция F, Ссли Π΅Π΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ 6?

function f(a:word):longword; begin if a>0 then f := f(a-1)*a; else f:=1; end;

ΠžΡ‚Π²Π΅Ρ‚: 720

16_3: Π•Π“Π­ ΠΏΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ 2017 Π·Π°Π΄Π°Π½ΠΈΠ΅ 16 (11) ЀИПИ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ 2 (ΠšΡ€Ρ‹Π»ΠΎΠ² Π‘.Π‘., Π§ΡƒΡ€ΠΊΠΈΠ½Π° Π’.Π•.):

НиТС записаны Π΄Π²Π΅ рСкурсивныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹): F ΠΈ G.
Бколько символов Β«Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠ°Β» Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½ΠΎ Π½Π° экранС ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π²Ρ‹Π·ΠΎΠ²Π° F(18)?

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

РСкурсивная функция Π² python

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

РСкурсивныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

РСкурсивная функция β€” это Ρ‚Π°, которая Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ сама сСбя.

Π’ качСствС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° рассмотритС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

Вызывая Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ здСсь ΠΈ пСрСдавая Π΅ΠΉ Ρ†Π΅Π»ΠΎΠ΅ число, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π» этого числа (n!).

Π’ΠΊΡ€Π°Ρ‚Ρ†Π΅ ΠΎ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»Π°Ρ…

Π€Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π» числа β€” это число, ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ число Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ 1.

НапримСр, Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π» числа 7:
7! = 7*6*5*4*3*2*1 = 5040

ВывСсти Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π» числа ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

Π­Ρ‚Π° функция Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚: Β«Π€Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π» 3 это 6Β». Π•Ρ‰Π΅ Ρ€Π°Π· рассмотрим эту Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ:

Благодаря условной конструкции пСрСмСнная n вСрнСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎ 1. Π­Ρ‚ΠΎ Π΅Ρ‰Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ условиСм Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ. РСкурсия останавливаСтся Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ удовлСтворСния условиям.

Π­Ρ‚ΠΎ ΠΈ Π΅ΡΡ‚ΡŒ рСкурсия. Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ это Ρ‚Π°ΠΊ сработало:

Π”Π΅Ρ‚Π°Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ рСкурсивной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π§Ρ‚ΠΎΠ±Ρ‹ Π΅Ρ‰Π΅ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Ρ€Π°Π·ΠΎΠ±ΡŒΠ΅ΠΌ Π½Π° этапы процСсс выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ 3.

Для этого Π½ΠΈΠΆΠ΅ прСдставим ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ экзСмпляр с Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ числами. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Β«ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒΒ», Ρ‡Ρ‚ΠΎ происходит ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΎΠ΄Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 3 Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°:

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ рСкурсия

Π’Ρ‹ΡˆΠ΅ показываСтся, ΠΊΠ°ΠΊ гСнСрируСтся стСк. Π­Ρ‚ΠΎ происходит благодаря процСссу LIFO (last in, first out, «послСдним ΠΏΡ€ΠΈΡˆΠ΅Π» β€” ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΡƒΡˆΠ΅Π»Β»). Как Π²Ρ‹ ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ Π·Π½Π°ΡŽΡ‚ ΠΎΡ‚Π²Π΅Ρ‚Π°, поэтому ΠΎΠ½ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² стСк.

РСкурсия Π² Python ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π² 3000 слоСв.

РСкурсивно ΠΈΠ»ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ?

ΠšΠ°ΠΊΠΎΠ²Ρ‹ ΠΆΠ΅ прСимущСства рСкурсивных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ? МоТно Π»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚? Когда Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΈ, Π° ΠΊΠΎΠ³Π΄Π° β€” Π΄Ρ€ΡƒΠ³ΠΈΠ΅?

Π’Π°ΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΈ ΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ слоТности. РСкурсивныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ большС мСста Π² памяти ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ ΠΈΠ·-Π·Π° постоянного добавлСния Π½ΠΎΠ²Ρ‹Ρ… слоСв Π² стСк Π² памяти. Однако ΠΈΡ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΡƒΠ΄Π° Π²Ρ‹ΡˆΠ΅.

РСкурсия ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΉ, Ссли Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ рСкурсия ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΉ, Ссли Π΅Π΅ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Из-Π·Π° этого вычислСния Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‡Π°Ρ‰Π΅, Ρ‡Π΅ΠΌ трСбуСтся.

НаписаниС ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ трСбуСтся большСго количСства ΠΊΠΎΠ΄Π°. НапримСр, дальшС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для вычислСния Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»Π°, Π½ΠΎ с ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ. Выглядит Π½Π΅ Ρ‚Π°ΠΊ изящно, Π½Π΅ ΠΏΡ€Π°Π²Π΄Π° Π»ΠΈ?

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

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

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

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

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

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

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

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