1 مصطفى القباني نشر 13 أغسطس 2020 أرسل تقرير نشر 13 أغسطس 2020 يمكن عمل المطلوب كالآتي: #include <iostream> using namespace std; int minimumNumberOfSteps(int n, int count){ if (n==1){ return count; } else if(n%3 == 0){ return minimumNumberOfSteps(n/3, count+1); } else if(n%2 == 0){ return minimumNumberOfSteps(n/2, count+1); } else{ return minimumNumberOfSteps(n-1, count+1); } } int main() { int n; cout<<"Please enter n"; cin >> n; int answer = minimumNumberOfSteps(n,0); cout<< answer << endl; return 0; } في الدالة المعرفة تستخدم الrecursion مثل المطلوب وتأخذ متغيرين هما العدد n، وعدد الخطوات التي تم عملها count حتى الآن، وتطبق الأربع حالات المعطاه وهي: إذا كانت قيمة n مساوية للواحد نقوم بإرجاع عدد الخطوات التي تم عملها للوصول. إذا كانت n تقبل القسمة على ثلاثة، نقوم بإستدعاء الدالة مع إستبدال n بn/3 وإضافة واحد لعدد الخطوات count. إذا كانت n تقبل القسمة على اثنان أي انها عدد زوجي، نقوم بإستدعاء الدالة مع إستبدال n بn/2 وإضافة واحد لعدد الخطوات count. إذا كانت n لا تقبل القسمة على 2 أو ثلاثة، نقوم بإستدعاء الدالة مع إستبدال n بn-1 وزيادة واحد لعدد الخطوات count. يمكنك تجربة الكود من هنا. 1 اقتباس
0 Mohanad Hammoudeh نشر 14 أغسطس 2020 الكاتب أرسل تقرير نشر 14 أغسطس 2020 (معدل) تم التعديل في 14 أغسطس 2020 بواسطة Mohanad Hammoudeh اقتباس
السؤال
Mohanad Hammoudeh
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.