Լրացուցիչ Բլոկների Տեսակներ (EBT) - Դասավորության Կառուցողի նոր փորձառություն❗

Լրացուցիչ Բլոկների Տեսակներ (EBT) - ձևավորված, կարգավորելի բլոկների տեսակներ՝ սլայդշոուներ, ներդիրներ, քարտեր, բացվող ցանկեր և շատ ուրիշներ։ Ներառված կարգավորումներ՝ ֆոնի, DOM տուփի, JavaScript փլագինների համար։ Փորձեք դասավորությունների կառուցման ապագան արդեն այսօր։

EBT մոդուլների ցուցադրական տարբերակներ Ներբեռնել EBT մոդուլները

❗Լրացուցիչ Պարբերությունների Տեսակներ (EPT) - Պարբերությունների նոր փորձառություն

Լրացուցիչ պարբերության տեսակներ (EPT) - անալոգիական պարբերության վրա հիմնված մոդուլների հավաքակազմ։

EPT մոդուլների ցուցադրական տարբերակներ Ներբեռնել EPT մոդուլները

Scroll

PHP Դասեր - Դաս 9 - Ռեկուրսիա

10/05/2025, by Ivan

Նախորդ դասում մենք ուսումնասիրեցինք PHP-ում ֆունկցիաների օգտագործումը։ Այժմ ավելի կխորանանք դրանց կիրառման մեջ։ Մինչ այս մենք դիտարկում էինք հետևյալ տեսակի ֆունկցիաներ՝

<?php
function myFunction(){ // ֆունկցիայի սահմանում

}

$x = myFunction(); // ֆունկցիայի կանչ
?>

Ի՞նչ կլինի, եթե ֆունկցիան կանչենք հենց իր մարմնի ներսում։

<?php
function myFunction(){
  $x = myFunction()
  ...
  return $x;
}

$y = myFunction();

Ֆունկցիայի այսպիսի կանչը իր ներսում կոչվում է ռեկուրսիա։ Թեև տեսականորեն բարդ է թվում, գործնականում ամեն ինչ շատ պարզ է։

Եկեք ստեղծենք ֆունկցիա, որը կհաշվի թվի աստիճանը։ Ալգեբրայի դասընթացից դուք հիշում եք, որ n-րդ աստիճանը նշանակում է այդ թիվը n անգամ ինքն իրենով բազմապատկված։ PHP-ում դա այսպես կլինի՝

<?php
function myDegree($x, $n){
  if($n == 0){
	return 1;
  }
  if($n < 0){
    return myDegree( 1/$x, -$n); // -$n նշանակում է նշանի փոփոխություն
  }
  return $x * myDegree($x, $n-1); // ֆունկցիայի կանչ իր ներսում
}

$y = myDegree(2, -4); // ֆունկցիայի նախնական կանչ
print $y;
?>

Եկեք հիմա վերլուծենք այս ֆունկցիան։ return-ից հետո ֆունկցիան դադարում է գործել և վերադարձնում է նշված արժեքը։

Առաջին if-ը՝ if($n == 0) նշանակում է՝ եթե աստիճանը 0 է, վերադարձնել 1։ Այստեղ պարզ է՝ յուրաքանչյուր թիվ բարձրացված զրո աստիճան՝ հավասար է 1։ Հաջորդը՝ if($n < 0) նշանակում է՝ եթե աստիճանը բացասական է, ապա փոխում ենք այն դրականի՝ միևնույն ժամանակ շրջելով թիվը՝ դարձնելով հակադարձ։ Դա էլ է ըստ աստիճանի սահմանման։

Իսկ եթե աստիճանը դրական է և ոչ 0, ապա կանչում ենք մեր ֆունկցիան՝ աստիճանը ամեն անգամ նվազեցնելով 1-ով և արդյունքը բազմապատկում հիմնական թվի վրա։

Դիտարկենք ֆունկցիայի յուրաքանչյուր փուլ՝

1. Աստիճան -4, թիվ 2։ Կաշխատի երկրորդ if-ը։ Թիվը կդառնա 0.5, աստիճանը՝ 4։

2. Աստիճան 4, թիվ 0.5։ Կանցնի return $x * myDegree($x, $n-1)

3. Աստիճան 3, թիվ 0.25։

4. Աստիճան 2, թիվ 0.125։

5. Աստիճան 1, թիվ 0.0625։

Վերջին անգամ կաշխատի if($n == 0), կվերադարձնի 1, որը կբազմապատկվի նախորդ արդյունքներով։ Ռեկուրսիան կավարտվի։

Մեկ այլ նմանատիպ օրինակ՝ թվի ֆակտորիալ։ Թվի ֆակտորիալը բոլոր թվերի արտադրյալն է մինչև այդ թիվը։ Օրինակ՝ 6! = 6×5×4×3×2×1 = 720։ Ինչպես երևում է՝ այստեղ ևս օգտագործվում է ռեկուրսիա։

<?php
function myRecursion($x){
  if($x == 1){
    return $x;
  }
  return $x*myRecursion($x-1);
}

$y = myRecursion(8);
print $y;
?>

Այս օրինակը ավելի պարզ է, քան նախորդը։ Կարծում եմ դուք ինքնուրույն կկարողանաք վերլուծել myRecursion ֆունկցիայի պարամետրերի փոփոխությունները։