السلام عليكم ورحمة الله وبركاته
ماهي recursive function ؟
هي استدعاء الدالة لنفسها لمرة او اكثر من مرة.
شكلها؟
Function recursive(ByVal paramenter) As Integer recursive(paramenter) End Function
مافائدتها في برامجنا ؟
فائدتها تقلل من عدد الاكواد البرمجيه وتسهل فهم البرنامج في مراجعته
كيف نستغلها؟
لفرض اننا اردنا ايجاد X^n
بهذه الطريقة اي الرقم يضرب في نفسه عدد من المرات. فنكون داله هكذا
:
Function power(ByVal x As Integer, ByVal n As Integer) As Integer If n > 0 Then Return (x * power(x, n - 1)) Else Return 1 End If End Function
لو كان لدينا
power( 3,5)
فتسلسل العمليات داخل recursive تكون هكذا
3*3(function recursive(3,5-1) 3*3*3(function recursive(3,4-1) 3*3*3*3(function recursive(3,3-1) 3*3*3*3*3(function recursive(3,2-1) 3*3*3*3*3 *3(function recursive(3,1-1)
اي ان الدالة كل ماتصل للشرط وتجد ان القيمة اكبر من صفر اي لازال للاس قيمة متبقية يعيد الرقم المراد ايجاد اسه مضروب بدالة مرسل لها الرقم واسه باقل من واحد وتستمر هذه العملية الداخلية حتى يصبح الاس المرسل صفر فيعاد واحد
لو اردنا البحث داخل قرص معيين او داخل الومبيوتر كله عن ملف معيين
باستخدام هذه الدالة لاحظ كم تبسط الكود
Public Sub FindFile(ByVal targetDirectory As String)
Try
Dim fileEntries As String() = Directory.GetFiles(targetDirectory)
Dim fileName As String
For Each fileName In fileEntries
'هنا تظهر جميع الملفات بكا مجلد نستطيع ان نجدها بسهولة
Next
Dim subdirectoryEntries As String() = Directory.GetDirectories(targetDirectory)
Dim subdirectory As String
For Each subdirectory In subdirectoryEntries
'في حال وجد مجلد داخل المجلد الحالي يرجع يبحث في داخله
FindFile(subdirectory)
Next subdirectory
Catch ex As Exception
End Try
End Sub
عند الاستدعاء نكتب
FindFile("D\")في ما لو اردنا البحث ضمن هذه المحرك