Ողջույն հարգելի ընթերցողներ։ Այսօր ուզում եմ Ձեզ ներկայացնել ռեկուրսիա (recursion) հասկացությունը։
Նախ մի քանի խոսքով կներկայացնեմ, թե ինչ է այն իրենից ներկայացնում, այնուհետև կոդի տեսքով կդիտարկենք օրինակներ։ Ռեկուրսիան մեծ տարածում է գտել գիտության տարբեր ոլորտներում, մասնավորապես մաթեմատիկայում և ինֆորմատիկայում։ Քանի որ մեզ հետաքրքրում է ռեկուրսիայի կիրառումը միայն ծրագրավորման ոլորտում, այդ իսկ պատճառով չենք անդրադառնա մյուս ոլորտներին։
Ծրագրավորման ոլորտում ռեկուրսիա ասելով հասկանում ենք այն դեպքը, երբ ֆունկցիայի մարմնի մեջ կանչվում է հենց ինքը՝ ֆունկցիան (հասարակ ռեկուրսիա)։ Կա նաև բարդ կամ անուղղակի ռեկուրսիա, որի դեպքում A ֆունկցիան կանչում է B ֆունկցիային, իսկ B-ն՝ A-ին։
Ռեկուրսիա գրելուց պետք է ուշադիր լինել, որպեսզի անվերջ ցիկլ չառաջանա։ PHP լեզվում անվերջ ցիկլը այդքան էլ վտանգավոր չէ, քանի որ այն ունի ներդրվող գործողությունների կատարման քանակ, որը գերազանցելու դեպքում կոդի աշխատանքը կկանգնեցվի և սխալի մասին հաղորդագրություն կարտապատկերվի։
Այժմ կոնկրետ օրինակների վրա դիտարկենք ռեկուրսիան։ Դիտարկենք մեկական օրինակ JavaScript և PHP լեզուներով։
Դիտարկենք հետևյալ երկու խնդիրները.
- Տպել 1-ից 100 թվերը ռեկուրսիայով։
- Հաշվել մուտքագրված թվի ֆակտորիալը ռեկուրսիայով։
Առաջին խնդիրը կգրենք JavaScript լեզվով, իսկ երկրորդը՝ PHP-ով։
Առաջին խնդիրը լուծելու համար ստեղծենք index1.html ֆայլը:
Գրենք հետևյալ կոդը այդ ֆայլում.
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> </head> <body> <script> function recursion(number) { if (number <= 100) { document.write(number + '<br />'); recursion(++number); } } recursion(1); </script> </body> </html>
Ինչպես տեսնում ենք, recursion ֆունկցիայի մեջ կանչվում է հենց ինքը՝ recursion ֆունկցիան։ Եթե պայմանը չգրվեր, ապա անվերջ ցիկլ կառաջանար։ Այստեղ կարող եք տեսնել աշխատանքը։
Այժմ քննարկենք երկրորդ խնդիրը։ Դրա համար ստեղծենք index2.html և index.php ֆայլերը։ Առաջին ֆայլում ուղղակի կունենանք input տարր, որում կմուտքագրենք թիվ և այն կուղարկենք index.php ֆայլին։ index.php ֆայլում կարտածենք այդ թվի ֆակտորիալը, որը կհաշվենք ռեկուրսիայի միջոցով։
Առաջին ֆայլում գրում ենք հետևյալը․
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> </head> <body> <form action="./index.php" method="POST"> <input type="number" name="number" /> <button type="submit" name="submit">Submit</button> </form> </body> </html>
Երկրորդ ֆայլում գրում ենք հետևյալը․
if (isset($_POST['submit']) && isset($_POST['number'])) { $number = intval($_POST['number']); if ($number >= 0) { $factorial = factorial($number); echo 'Number: ' . $number . '<br />' . 'Factorial: ' . $factorial; } else { echo 'Error'; } } function factorial($number) { if ($number <= 1) { return 1; } else { $result = $number * factorial($number - 1); return $result; } }
Այստեղ եթե մուտքագրված թիվը բացասական է, ապա տպվում է Error հաղորդագրությունը։ Հակառակ դեպքում կանչվում է factorial ֆունկցիան։ Ֆունկցիայի մեջ ստուգվում է, եթե որպես արգումենտ փոխանցված թիվը 1-ից փոքր է (0 կամ 1), ապա վերադարձվում է 1, հակառակ դեպքում կատարվում է հաշվարկ, որի ժամանակ կանչվում է factorial ֆունկցիան, սակայն որպես արգումենտ փոխանցվում է number-ից մեկով փոքր թիվը։
Այսպիսով ավարտեցինք ռեկուրսիայի քննարկումը։ Հուսով եմ իմ այս գրառումը օգտակար եղավ Ձեզ համար։
Որևէ հարցի դեպքում կարող եք դիմել մեզ մեկնաբանությունների կամ քննարկումների բաժիններում։
Շնորհակալություն մեր բլոգից օգտվելու համար։