Avatar ·

كيفية تنفيذ recursion في Java؟

كيفية تنفيذ recursion بشكل صحيح في Java؟ مشكلة StackOverflowError

مرحباً بالجميع! أحاول فهم recursion في Java، لكني أواجه باستمرار خطأ StackOverflowError. أرجو توضيح كيفية تنظيم استدعاء method بشكل متكرر لتجنب ذلك؟

كتبت دالة بسيطة لحساب factorial لرقم، لكن عند القيمة 10000 يتعطل البرنامج. هذا هو الكود الخاص بي:

public class RecursionTest {\n    public static int factorial(int n) {\n        if (n == 0) {\n            return 1;\n        }\n        return n * factorial(n - 1);\n    }\n\n    public static void main(String[] args) {\n        System.out.println(factorial(10000)); // StackOverflowError\n    }\n}

لقد جربت بالفعل:

  1. زيادة حجم stack عبر معاملات JVM (-Xss2m)، لكن هذا يؤجل المشكلة فقط ولا يحلها.
  2. استبدال int بـ long و BigInteger — النتيجة نفسها، الخطأ في