Meriam Drawshy نشر 19 يناير 2021 أرسل تقرير نشر 19 يناير 2021 اكتب عملية تراجعية تتلقى كبرامتر مصفوفة حدودها من نمط صحيح وتتلقى أيضا عدد صحيح k على العملية ان تعيد عدد المرات التي ظهر فيها k في المصفوفة اكتب عملية تراجعية تتلقى كبرامتر مصفوفة حدودها من نمط صحيح على العملية ان تبدّل كل حد موجب ب 1 وكل حد سالب ب 1-. اكتب عملية تراجعية تتلقى كبرامتر مصفوفة حدودها من نمط صحيح وتتلقى أيضا عدد صحيح k على العملية ان تعيد true اذا ظهر k في المصفوفة والّا تعيد false. اقتباس
0 Abdulraheem Barghouthi نشر 19 يناير 2021 أرسل تقرير نشر 19 يناير 2021 (معدل) هل المطلوب كتابة recursion method/function ( دالة تستدعي نفسها مراراً وتكراراً لتحقيق المطلوب) ؟ تم التعديل في 19 يناير 2021 بواسطة Abdulraheem Barghouthi اقتباس
0 Abdulraheem Barghouthi نشر 19 يناير 2021 أرسل تقرير نشر 19 يناير 2021 (معدل) سأشرح لك مبدأ عمل الدالة التراجعية وأجعلك تجيبين الأسئلة بنفسك، الأمر بسيط جداً فقط ركزي وإفهمي آلية عملها. لنفرض أن لدينا الدالة التالية : void arrayCount(int arr[]){ //... } void تعني أن الدالة لن ترجع لنا أي قيمة، لأننا في هذا المثال نريد طباعة عناصر المصفوفة بإستخدام الدالة التراجعية. في البداية نحتاج لمتغير من نوع int كـعداد يبدأ من الصفر وهو العنصر الأول في أي مصفوفة. إذا نضيف المتغير ونسميه counter أي العداد، فيصبح الكود كالتالي: int counter =0; void arrayCount(int arr[]){ //... } بعد ذلك نبدأ بكتابة الدالة arrayCount: ما هو الشرط الذي نستطيع من خلاله أن نعرف أننا وصلنا لآخر عنصر في المصفوفة ؟ ما رأيك بالخاصية Length الموجودة مسبقاً في المصفوفة والتي ترجع لنا طول المصفوفة؟ يمكننا الإستفادة من تلك الخاصية في تطبيق فكرتنا من خلال الشرط التالي: if( counter < arr.Length ){ //... } توضيح الشرط: طالما أن العداد الخاص بنا counter أقل من طول المصفوفة فهذا يعني أننا لم نصل لنهاية المصفوفة، ويتبقى عنصار يجب طباعتها. إذاً هيا بنا نضيف الشرط للكود الخاص بنا ليكون كالتالي: int counter =0; void arrayCount(int arr[]){ if( counter < arr.Length ) //... } } الآن يجب علينا طباعة عناصر المصفوفة من خلال: Console.WriteLine(); سنقوم بإضافة السطر الخاص بالطباعة في بداية الدالة التراجعية فيصبح الكود الخاص بنا كالتالي: int counter =0; void arrayCount(int arr[]){ Console.WriteLine(arr[counter]); if( counter < arr.Length ) //... } } يجب علينا أن نزيد العداد الخاص بنا counter في كل مرة تستدى به الدالة لضمان طباعة جميع العناصر، لاحظ آخر سطر في الدالة: int counter =0; void arrayCount(int arr[]){ Console.WriteLine(arr[counter]); if( counter < arr.Length ) //... } counter= counter+1; } ماذا تتوقعين أن يكون الناتج في حال تنفيذ الكود التالي وإستدعاء الدالة arrayCount ؟ سيتم طباعة أول عنصر في المصفوفة فقط, لماذا؟ لأننا ببساطة لم نقم بإستدعائها إلا مرة واحدة فقط وبالتالي سيطبع العنصر الأول فقط. سنقوم بإستدعاء الدالة من داخلها ( هذا هو مفهوم الدالة التراجعية أو recursion method/function ) في حال بقي عناصر يجب طباعتها ( الشرط الذي أضفناه ), لاحظ الكود الذي أضفناه: int counter =0; void arrayCount(int arr[]){ Console.WriteLine(arr[counter]); //طباعة عناصر المصفوفة if( counter < arr.Length )// في حال كان هناك عناصر أُخرى باقية سيتم إستدعاء الدالة مرة أخرى لحين الوصول إلى آخر المصفوفة arrayCount(arr); // يتم إستدعاء الدالة نفسها من داخلها لطباعة العناصر التالية } counter= counter+1; // زيادة العداد في كل مرة تستدعى فيها الدالة } وبهذا نكون قد فهما مبدأ الrecursion functions/methods. مرفق صورة توضيحية لآلية عمل الـrecursion functions/methods: أطيب الأمنيات بالتوفيق. تم التعديل في 19 يناير 2021 بواسطة Abdulraheem Barghouthi 2 اقتباس
السؤال
Meriam Drawshy
اكتب عملية تراجعية تتلقى كبرامتر مصفوفة حدودها من نمط صحيح وتتلقى أيضا عدد صحيح k على العملية ان تعيد عدد المرات التي ظهر فيها k في المصفوفة
اكتب عملية تراجعية تتلقى كبرامتر مصفوفة حدودها من نمط صحيح على العملية ان تبدّل كل حد موجب ب 1 وكل حد سالب ب 1-.
اكتب عملية تراجعية تتلقى كبرامتر مصفوفة حدودها من نمط صحيح وتتلقى أيضا عدد صحيح k على العملية ان تعيد true اذا ظهر k في المصفوفة والّا تعيد false.
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.