Π—Π°ΠΊΠ°Π·Π°Ρ‚ΡŒ курсовыС, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅, Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚Ρ‹...
ΠžΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° Π·Π°ΠΊΠ°Π·. НСдорого!

РСкурсия Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. 
Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π”Π°Π½Π½Ρ‹Π΅ ОписаниС Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ссылку Π½Π° ΡΠ°ΠΌΡƒ сСбя. ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ структуры ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ описании списков ΠΈ Π³Ρ€Π°Ρ„ΠΎΠ². ΠŸΡ€ΠΈΠΌΠ΅Ρ€ описания списка (C++): РСкурсивная структура Π΄Π°Π½Π½Ρ‹Ρ… Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ обуславливаСт ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ рСкурсии для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ этих Π΄Π°Π½Π½Ρ‹Ρ…. Π›ΡŽΠ±ΡƒΡŽ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠΈ ΡΡ‚Π΅ΠΊΠΎΠΌ. Element_of_list *next; /* ссылка Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ° */. Int data… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

РСкурсия Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ рСкурсия — Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹) ΠΈΠ· Π½Π΅Ρ‘ ΠΆΠ΅ самой, нСпосрСдствСнно (простая рСкурсия) ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (слоТная ΠΈΠ»ΠΈ косвСнная рСкурсия), Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, функция A Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽB, Π° Ρ„ункция A — Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ B. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ называСтся Π³Π»ΡƒΠ±ΠΈΠ½ΠΎΠΉ рСкурсии.

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

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

Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ рСкурсии, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ «Ρ…востовой рСкурсиСй». Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… языков программирования, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π° (исходного ΠΈΠ»ΠΈ исполняСмого), автоматичСски ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ Ρ…Π²ΠΎΡΡ‚ΠΎΠ²ΡƒΡŽ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ ΠΊ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, благодаря Ρ‡Π΅ΠΌΡƒ обСспСчиваСтся Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² с Ρ…востовой рСкурсиСй Π² ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΌ ΠΎΠ±ΡŠΡ‘ΠΌΠ΅ памяти. Π’Π°ΠΊΠΈΠ΅ рСкурсивныС вычислСния, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ бСсконСчны (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ рСкурсии организуСтся Ρ€Π°Π±ΠΎΡ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ), Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΡΡ‚ ΠΊ ΠΈΡΡ‡Π΅Ρ€ΠΏΠ°Π½ΠΈΡŽ памяти. Однако, Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° стандарты языков программирования Ρ‡Ρ‘Ρ‚ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚, ΠΊΠ°ΠΊΠΈΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ условиям Π΄ΠΎΠ»ΠΆΠ½Π° ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡ‚ΡŒ рСкурсивная функция, Ρ‡Ρ‚ΠΎΠ±Ρ‹ транслятор Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π» Π΅Ρ‘ Π² ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ. Одно ΠΈΠ· Ρ€Π΅Π΄ΠΊΠΈΡ… ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ — язык Scheme (Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚ языка Lisp), описаниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ содСрТит всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ свСдСния.

Π›ΡŽΠ±ΡƒΡŽ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠΈ ΡΡ‚Π΅ΠΊΠΎΠΌ.

Π”Π°Π½Π½Ρ‹Π΅ ОписаниС Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ссылку Π½Π° ΡΠ°ΠΌΡƒ сСбя. ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ структуры ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ описании списков ΠΈ Π³Ρ€Π°Ρ„ΠΎΠ². ΠŸΡ€ΠΈΠΌΠ΅Ρ€ описания списка (C++):

struct element_of_list.

{.

element_of_list *next; /* ссылка Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ° */.

int data; /* Π½Π΅ΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ */.

};

РСкурсивная структура Π΄Π°Π½Π½Ρ‹Ρ… Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ обуславливаСт ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ рСкурсии для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ этих Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ