• Գլխավոր
  • Լուրեր
    • Առողջապահություն
    • Անվտանգություն
    • Արհեստական Ինտելեկտ
    • Էկոլոգիա
    • Մեքենաշինություն
    • Ռոբոտաշինություն
    • Համացանց
    • Համակարգիչ
    • Սմարթֆոն
    • Սոցցանց
    • Google
    • Microsoft
    • Hi-Tech
  • Վեբ
    • PHP
    • HTML
      • HTML5
    • CSS
      • CSS3
    • JavaScript
      • jQuery
    • WordPress
  • SQL
  • Թեստեր
    • PHP
    • MySQL
    • HTML
    • JavaScript
    • CSS
  • Ֆորում
  • Հետադարձ կապ
IT-Blog.am
Տեղեկատվական տեխնոլոգիաների պորտալ
  • Գլխավոր
  • Լուրեր
    • Առողջապահություն
    • Անվտանգություն
    • Արհեստական Ինտելեկտ
    • Էկոլոգիա
    • Մեքենաշինություն
    • Ռոբոտաշինություն
    • Համացանց
    • Համակարգիչ
    • Սմարթֆոն
    • Սոցցանց
    • Google
    • Microsoft
    • Hi-Tech
  • Վեբ
    • PHP
    • HTML
      • HTML5
    • CSS
      • CSS3
    • JavaScript
      • jQuery
    • WordPress
  • SQL
  • Թեստեր
    • PHP
    • MySQL
    • HTML
    • JavaScript
    • CSS
  • Ֆորում
  • Հետադարձ կապ
Գլխավոր  /  JavaScript • PHP • Web  /  Ռեկուրսիա (recursion) հասկացությունը
Recursion
02 Հունիսի 2016

Ռեկուրսիա (recursion) հասկացությունը

Հեղինակ Տարոն
JavaScript, PHP, Web

Ողջույն հարգելի ընթերցողներ։ Այսօր ուզում եմ Ձեզ ներկայացնել ռեկուրսիա (recursion) հասկացությունը։

Նախ մի քանի խոսքով կներկայացնեմ, թե ինչ է այն իրենից ներկայացնում, այնուհետև կոդի տեսքով կդիտարկենք օրինակներ։ Ռեկուրսիան մեծ տարածում է գտել գիտության տարբեր ոլորտներում, մասնավորապես մաթեմատիկայում և ինֆորմատիկայում։ Քանի որ մեզ հետաքրքրում է ռեկուրսիայի կիրառումը միայն ծրագրավորման ոլորտում, այդ իսկ պատճառով չենք անդրադառնա մյուս ոլորտներին։

Ծրագրավորման ոլորտում ռեկուրսիա ասելով հասկանում ենք այն դեպքը, երբ ֆունկցիայի մարմնի մեջ կանչվում է հենց ինքը՝ ֆունկցիան (հասարակ ռեկուրսիա)։ Կա նաև բարդ կամ անուղղակի ռեկուրսիա, որի դեպքում A ֆունկցիան կանչում է B ֆունկցիային, իսկ B-ն՝ A-ին։

Ռեկուրսիա գրելուց պետք է ուշադիր լինել, որպեսզի անվերջ ցիկլ չառաջանա։ PHP լեզվում անվերջ ցիկլը այդքան էլ վտանգավոր չէ, քանի որ այն ունի ներդրվող գործողությունների կատարման քանակ, որը գերազանցելու դեպքում կոդի աշխատանքը կկանգնեցվի և սխալի մասին հաղորդագրություն կարտապատկերվի։

Այժմ կոնկրետ օրինակների վրա դիտարկենք ռեկուրսիան։ Դիտարկենք մեկական օրինակ JavaScript և PHP լեզուներով։

Դիտարկենք հետևյալ երկու խնդիրները.

  1. Տպել 1-ից 100 թվերը ռեկուրսիայով։
  2. Հաշվել մուտքագրված թվի ֆակտորիալը ռեկուրսիայով։

Առաջին խնդիրը կգրենք 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-ից մեկով փոքր թիվը։

Այսպիսով ավարտեցինք ռեկուրսիայի քննարկումը։ Հուսով եմ իմ այս գրառումը օգտակար եղավ Ձեզ համար։

Որևէ հարցի դեպքում կարող եք դիմել մեզ մեկնաբանությունների կամ քննարկումների բաժիններում։

Շնորհակալություն մեր բլոգից օգտվելու համար։

Կապված գրառումներ

  • WordPress -ի տեղադրումը .Net -ի վրա

    03/16/2017
  • mysql transaction

    MySQL գործարքի(transaction) կառավարման օպերատորներ

    11/19/2016
  • Class

    Կլասների (classes) գրելաձևը (syntax)

    10/20/2016
Facebook
  • Շատ Դիտված Գրառումներ
  • Նոր գրառումներ
  • Calculator
    Հաշվիչի (calculator) պատրաստում 04/18/2016
  • Sendmail կարգավորումներ 04/01/2016
  • Recursion
    Ռեկուրսիա (recursion) հասկացությունը 06/02/2016
  • Icon տառատեսակներ 02/21/2016
  • MySQL joins
    MySQL JOINS (MySQL միացումներ) 06/13/2016
  • Ի՞նչ է Pi Network-ը և ինչպե՞ս վաստակել Pi 03/27/2020
  • Honda-ն ներկայացրել է մոտոցիկլետ, որն օգտագործում է քամու էներգիա 12/23/2017
  • Նոր 3D-տպիչ սարքը ստեղծում է առարկաներ վայրկյանների ընթացքում 12/22/2017
  • Հետազոտողներն օգտագործում են էլեկտրական հոսանքներ`մարդու հյուսվածքներում քաղցկեղի հայտնաբերման համար 12/18/2017
  • Nvidia ընկերությունը ներկայացրել է երբևէ ստեղծված ամենահզոր գրաֆիկական պրոցեսորը 12/16/2017
  • WordPress -ի տեղադրումը .Net -ի վրա 03/16/2017
  • Class
    Կլասների (classes) գրելաձևը (syntax) 10/20/2016
  • encapsulation
    Ինկապսուլացիա (Encapsulation) 08/17/2016
  • object oriented programming
    Օբյեկտ կողմնորոշված ծրագրավորում (OOP) 07/04/2016
  • Ի՞նչ է Pi Network-ը և ինչպե՞ս վաստակել Pi 03/27/2020
  • Honda-ն ներկայացրել է մոտոցիկլետ, որն օգտագործում է քամու էներգիա 12/23/2017
  • Նոր 3D-տպիչ սարքը ստեղծում է առարկաներ վայրկյանների ընթացքում 12/22/2017
  • mysql transaction
    MySQL գործարքի(transaction) կառավարման օպերատորներ 11/19/2016
  • MySQL Trigger
    MySQL տրիգերներ (Triggers) և իրադարձություններ(Events) 10/04/2016
  • Procedures and Functions
    MySQL ընթացակարգեր (procedures) և ֆունկցիաներ (functions) 08/31/2016
  • MYSQL View
    MySQL ներկայացումներ (VIEWS) 07/16/2016
  • WordPress -ի տեղադրումը .Net -ի վրա 03/16/2017
  • SEO խրվակներ WordPress-ի համար 04/25/2016
  • Ծանոթացում WordPress-ի կառավարակետի հետ (մաս 2) 02/24/2016
  • Ի՞նչ է CMS-ը 02/17/2016
© 2020 թ.  IT-Blog.am Բոլոր հեղինակային իրավունքները պաշտպանված են:

Սույն կայքում տեղադրված նյութերի հեղինակային իրավունքը պատկանում է բացառապես IT-Blog.am կայքի հեղինակներին և կայքում բոլոր հրապարակված նյութերն անհատական օգտագործման համար են։ Այս կայքում  հրապարակված նյութերի (մասնակի կամ ամբողջական) վերահրապարկումը տեղեկատվություն տարածող այլ միջոցներում (բացառությամբ սոցկայքերի) արգելված է։ Խախտում թույլ տված անձինք կենթարկվեն պատասխանատվության` օրենքով սահմանված կարգով։