យើង​ដឹង​រួច​មក​ហើយ​ថា ក្បួន​មួយ​អាច​ត្រូវ​យក​ទៅ​ប្រើ​ជា​បញ្ជា​នៅ​ក្នុង​ក្បួន​មួយ​ទៀត​បាន​។ ក៏ប៉ុន្តែ លើស​ពី​នេះ​ទៀត ក្បួន​មួយ​ក៏​អាច​យក​ក្បួន​ខ្លួន​ឯង​មក​ប្រើ​ប្រាស់​ជា​បញ្ជា​នៅ​ក្នុង​ក្បួន​ខ្លួន​ឯង​បាន​ទៀត​ផង​។ ការធ្វើ​របៀប​នេះ ជា​ភាសា​អង់គ្លេស​ត្រូវ​គេ​ហៅ​ថា recursion ដែលមាន​លក្ខណៈ​ស្រដៀង​នឹង​បញ្ជា while ឬ​បញ្ជា do/while ដែរ​។ ពោល​គឺ​កម្មវិធី​ដំណើរការ​ទៅ​រហូត​ដល់​មាន​លក្ខខ័ណ្ឌ​មួយ​ត្រូវ​បំពេញ​ទើប​ឈប់​។ ពិនិត្យ​កម្មវិធី​ខាង​ក្រោម​នេះ៖

 

var x = 10;
 
function myfunction(){
  console.log("តំលៃ​របស់ x គឺ៖ "+x);
   
  x = x - 1;
  if(x == 0)
    return;
   
  myfunction();
}
   
myfunction();

 

នៅ​លើ​បន្ទាត់​លេខ 10 គឺ​ជាការ​យក​ក្បួន myfunction មក​ប្រើ​នៅ​ក្នុង​ក្បួន myfunction ខ្លួន​ឯង​ ដែល​ជា​ប្រការ​នឹង​ធ្វើ​អោយ​ក្បួន​នេះ ត្រូវ​យក​ទៅ​ប្រើ​ជា​ដដែល​ៗ​រហូត​ដល់​តំលៃ​លេខ​របស់ x ស្មើ​នឹង​សូន្យ​ទើប​ឈប់​។ ហើយ​នៅ​ពេល​ដែល​ក្បួន myfunction ត្រូវ​យក​ទៅ​អនុវត្ត​ម្តង តំលៃ​លេខ​របស់​ x ត្រូវ​ថយ​ចុះ 1 ។

 

ដូចនេះ នៅ​ពេល​ដែល​ក្បួន myfunction ត្រូវ​យក​ទៅ​ប្រើ​ចំនួន ១០ ដង តំលៃ​លេខ​របស់ x នឹង​ថយ​ចុះ​រហូត​ដល់ ០ ដែល​ជា​កត្តា​ធ្វើ​អោយ​លក្ខខ័ណ្ឌ​នៅ​ជាប់​នឹង​បញ្ជា if ត្រូវ​បំពេញ ដែល​ធ្វើ​អោយ​ការយក​ក្បួន myfunction មក​ប្រើ​ត្រូវ​បញ្ឈប់​។

 

ក៏​ប៉ុន្តែ យើង​ត្រូវ​ប្រយ័ត្នប្រយែង​ក្នុង​ការសរសេរ​កូដ​បង្កើត​យន្តការ recursion ពីព្រោះ​យន្តការ​នេះ​តែងតែ​បង្ករ​អោយ​មាន​បញ្ហា infinite loop ដែល​ធ្វើ​អោយ​កម្មវិធី​របស់​យើង​ដំណើរការ​ទៅ​ជាប់​រហូត​គ្មាន​ឈប់​៕