យើងដឹងរួចមកហើយថា ក្បួនមួយអាចត្រូវយកទៅប្រើជាបញ្ជានៅក្នុងក្បួនមួយទៀតបាន។ ក៏ប៉ុន្តែ លើសពីនេះទៀត ក្បួនមួយក៏អាចយកក្បួនខ្លួនឯងមកប្រើប្រាស់ជាបញ្ជានៅក្នុងក្បួនខ្លួនឯងបានទៀតផង។ ការធ្វើរបៀបនេះ ជាភាសាអង់គ្លេសត្រូវគេហៅថា recursion ដែលមានលក្ខណៈស្រដៀងនឹងបញ្ជា while ឬបញ្ជា do/while ដែរ។ ពោលគឺកម្មវិធីដំណើរការទៅរហូតដល់មានលក្ខខ័ណ្ឌមួយត្រូវបំពេញទើបឈប់។ ពិនិត្យកម្មវិធីខាងក្រោមនេះ៖
let x = 10
function myfunction(){
console.log(`The value of x is: ${x}`)
x -= 1
if(x == 0)
return
myfunction()
}
myfunction()
ដូចនេះ នៅពេលដែលក្បួន myfunction ត្រូវយកទៅប្រើចំនួន ១០ ដង តំលៃលេខរបស់ x នឹងថយចុះរហូតដល់ ០ ដែលជាកត្តាធ្វើអោយលក្ខខ័ណ្ឌនៅជាប់នឹងបញ្ជា if ត្រូវបំពេញ ដែលធ្វើអោយការយកក្បួន myfunction មកប្រើត្រូវបញ្ឈប់។
ក៏ប៉ុន្តែ យើងត្រូវប្រយ័ត្នប្រយែងក្នុងការសរសេរកូដបង្កើតយន្តការ recursion ពីព្រោះយន្តការនេះតែងតែបង្ករអោយមានបញ្ហា infinite loop ដែលធ្វើអោយកម្មវិធីរបស់យើងដំណើរការទៅជាប់រហូតគ្មានឈប់៕