اذهب إلى المحتوى

Recommended Posts

  • 1
نشر

يمكن عمل المطلوب كالآتي:
 

#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.

يمكنك تجربة الكود من هنا.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...