recursive function ေတြဟာ တကယ္ အသံုး၀င္ပါတယ္။သံုးေနတဲ႔ေနရာေတြလည္း အမ်ားၾကီး ရွိပါတယ္။ တကယ္ေတာ႔ recursive function ဆိုတာ function တစ္ခုကေန သူ႔ကိုသူ ျပန္ေခၚလိုက္တဲ႔အခါမွာ အဆံုးမရွိတဲ႔ loop ျဖစ္ေပၚလာတယ္။
အဲဒီ loop မွာ အဆံုးသတ္ရွိေစခ်င္ရင္ ေနာက္ထပ္ funciton call မေခၚခင္မွာ condition (if) ကို ထည့္သြင္းေပးရပါမည္။
recursive function ေတြကို အသံုးျပဳတဲ႔ေနရာေတြကေတာ႔ nth nested Array, reading folder and sub folder and files.
အဒီအေျခအေနေတြမွာ array ေတြက ႏွစ္ဆင့္ သံုးဆင့္ အျပင္ ဘယ္ႏွဆင့္ ဆိုတာ မသိႏိုင္တဲ႔အခါမ်ိဳးမွာ လဲသံုးပါတယ္။
folder ထဲမွာ folder ဘယ္ႏွခုရွိမယ္ မသိႏိုင္ဘူး။ အဲဒီ folder ထဲမွာလည္း folder ဘယ္ႏွခုရွိမယ္မသိႏိုင္ဘူး။ အဲဒီလို loop တစ္ုခုရဲ႕ အတြင္းက variable ေတြရဲ႕ အေျခအေနေပၚမူတည္၍ ေနာက္ထပ္ loop တစ္ခုကို ဖန္တီးရမွာျဖစ္ပါတယ္။
သာမန္ for loop, while loop ေတြက မေျဖရွင္းေပးႏိုင္ပါဘူး။
function factorial($i) {
if($i <= 1) {
return 1;
}
return $i * factorial($i - 1);
}
factorial(3);
အထက္က function ဟာ recursive function ျဖစ္ပါတယ္။အဲဒါဘယ္လိုအလုပ္လုပ္သလဲဆိုတာကိုေအာက္မွာ ပံုနဲ႔ရွင္းျပထားပါတယ္။
ပံုမွာ စာမ်ားကို ျမွားအတိုင္းလုိက္ဖတ္သြားပါ။ နားလည္သြားပါလိမ္႔မယ္။
အျခားေကာင္းေသာအခ်က္မွာ function ေတြရဲ႕ local scope ပဲျဖစ္ပါတယ္။ ဒါေၾကာင့္ loop တစ္ခုနဲ႔တစ္ခုအတြင္က နာမည္တူ varaible ေတြဟာ မထပ္ပဲ သူ႔ အပိုင္းနဲ႔သူအလုပ္လုပ္ပါတယ္။ အထက္ပါပံုမွာ
$i ဟာ loop အားလံုးမွာ ပါေနေပမယ့္ loop တစ္ခုနဲတစ္ခု သီးျခား $i ကိုပို္င္ဆိုင္ထားၾကပါတယ္။
ထိုေၾကာင့္ အလုပ္လုပ္ရပိုအဆင္ေျပပါတယ္။
အဲဒါေၾကာင္႔ပဲ မေကာင္းတဲ႔အခ်က္ျပန္ျဖစ္လာျပန္ပါတယ္။ အဲဒီလို loop function တစ္ခုျခင္းဆီက မတူညီတဲ႔ variable ေတြကို တည္ေဆာက္လာတဲ႔အတြက္ loop အေရအတြက္ မ်ားလာေလ memory ေပးမွာ ေနရာယူမႈ ပိုမ်ားလာေလးျဖစ္ပါတယ္။ ထို႔အခ်က္ဟာလည္း ထည္႔သြင္းစဥ္းစားရမယ့္ အခ်က္တစ္ခုပဲျဖစ္ပါတယ္။

EmoticonEmoticon