جاري التحميل...

دالة تنادي نفسها

الاسم down موجود داخل down، وكل خطوة تمرّر عدداً أصغر بواحد. لذلك down(3) يكتب 3 ثم 2 ثم 1.

السطر if n == 0: return هو التوقف. عندما يكون n مساوياً 0 يعمل هذا السطر ولا يُستعمل down مرة أخرى. إذا لم تكتبه، لا تنتهي الخطوات ولا يصل البرنامج إلى آخره. هذا الشكل المعطوب غير معروض في الأسفل.

3 ثم 2 ثم 1

python
def down(n):
    if n == 0:
        return
    print(n)
    down(n - 1)

down(3)

الشاشة تعرض 3 ثم 2 ثم 1. print يعمل قبل down التالي. down(1) يكتب 1 ثم يصل إلى down(0). down(0) يصطدم بالتوقف، ولا يكتب شيئاً، والبرنامج ينتهي.

انقل print إلى السطر الذي بعد down(n - 1). الأعداد الأصغر تُكتب أولاً، لأن كل خطوة تنتظر حتى تنتهي الخطوة الداخلية.

1 ثم 2 ثم 3

python
def down(n):
    if n == 0:
        return
    down(n - 1)
    print(n)

down(3)

الشاشة تعرض 1 ثم 2 ثم 3. down(0) لا يكتب شيئاً هنا أيضاً. أسطر print تعمل في طريق العودة، لذلك يُكتب 1 قبل 2 و2 قبل 3.

down(0) وحده لا يصل إلى print أبداً. التوقف يعمل فوراً.

down(0) لا يكتب شيئاً

python
def down(n):
    if n == 0:
        return
    print(n)
    down(n - 1)

down(0)

تبقى الشاشة فارغة وينتهي البرنامج. n يساوي 0 من البداية، فيُتجاوز print وdown التالي.

قراءة الشاشات على غير وجهها

البرنامج الثاني ليس 3 ثم 2 ثم 1. هذا الترتيب للبرنامج الأول، حيث print في الأمام. احذف if n == 0: return من أي منهما ولن تنتهي الخطوات. لا تشغّل تلك النسخة.

الصفحة التالية قائمة من القيم. هنا نرى فقط دالة تستعمل اسمها، والسطر الذي يوقفها عند 0.

تتبّع الأعداد

  1. ماذا يكتب البرنامج الأول، أولاً ثم بعد ذلك؟
  2. ماذا يكتب البرنامج الثاني، أولاً ثم بعد ذلك؟
  3. ماذا يكتب البرنامج الثالث؟
  4. تحذف التوقف عند 0. هل يصل البرنامج إلى آخره؟

ماذا يفعل down

الاسم down داخل down، مع n - 1، ينزل من 3 إلى 1. print قبل هذه الخطوة يكتب 3 ثم 2 ثم 1. print بعدها يكتب 1 ثم 2 ثم 3. if n == 0: return هو سبب انتهاء البرنامج. down(0) لا يكتب شيئاً.

🧠 اختبر معرفتك

جاهز للبدء

اختبر معرفتك

تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع

❓
5
الأسئلة
🎯
70%
للنجاح
♾️
∞
الوقت
🔄
∞
المحاولات

📝 التعليمات

  • اقرأ كل سؤال بعناية
  • اختر أفضل إجابة لكل سؤال
  • يمكنك إعادة الاختبار عدة مرات كما تريد
  • سيتم عرض تقدمك في الأعلى