PHP-ում ռեկուրսիայի հետ աշխատելը

Ծրագրավորման մեջ կա այնպիսի հասկացություն, ինչպիսին է ռեկուրսիան - երբ ֆունկցիան կանչում է ինքն իրեն: Եկեք նայենք օրինակով: Օգտագործելով ռեկուրսիա, արտածենք 1-ից մինչև 10 թվերը:

php<?php
  $i = 1;
  
  function func()
  {
    global $i;
    
    echo $i;
    $i++;
    
    if ($i <= 10){
      func(); // այստեղ ֆունկցիան կանչում է ինքն իրեն
    }
  }
  func();
?>

Եկեք քննարկենք, թե ինչպես է աշխատում այս կոդը:

Մենք ունենք գլոբալ փոփոխական $i և func ֆունկցիա, որի ներսում կոնսոլում արտածվում է $i փոփոխականի պարունակությունը, ապա կատարվում է ++:

Եթե մեր $i փոփոխականը փոքր է կամ հավասար 10-ի, ապա ֆունկցիան կանչվում է կրկին: Քանի որ $i փոփոխականը գլոբալ է, ապա ֆունկցիայի ամեն նոր կանչի դեպքում դրանում կլինի նախորդ կանչի ժամանակ սահմանված $i փոփոխականի արժեքը:

Ստացվում է, որ ֆունկցիան կկանչի ինքն իրեն մինչև $i-ը դառնա 10-ից մեծ:

Հաշվի առեք, որ մեր դեպքում ֆունկցիան անհնար է գործարկել առանց if - եթե դա արվի, ապա կստացվի ֆունկցիաների անվերջ կանչ: