Avatar ·

كيفية تنفيذ recursion في C++؟

مرحباً بالجميع! أنا مبتدئ في C++ وأحاول فهم recursion. كتبت دالة بسيطة لحساب factorial، لكنها لا تعمل بشكل صحيح. إليك الكود: ```cpp #include using namespace std; int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); } } int main() { int num = 5; cout << "Factorial " << num << " = " << factorial(num) << endl; return 0; } ``` أتوقع الحصول على 120 للرقم 5، لكن البرنامج أحياناً يتعطل أو يعيد قيماً غريبة. حاولت إضافة فحص للأرقام السالبة، لكن ذلك لم يساعد. قرأت أيضاً عن stack overflow، لكنني لست متأكداً كيف أتجنبه. ربما المشكلة أنني لا أستخدم base case بشكل صحيح؟ أو ربما أحتاج إلى تعديل نوع القيمة المُرجَعة؟ أريد فهم كيفية تنظيم recursion بشكل صحيح لتعمل بثبات للأعداد الكبيرة (مثلاً 20). سأكون ممتناً لشرح المبادئ الأساسية والإمكانيات.