دالة تنادي نفسها
الاسم down موجود داخل down، وكل خطوة تمرّر عدداً أصغر بواحد. لذلك down(3) يكتب 3 ثم 2 ثم 1.
السطر if n == 0: return هو التوقف. عندما يكون n مساوياً 0 يعمل هذا السطر ولا يُستعمل down مرة أخرى. إذا لم تكتبه، لا تنتهي الخطوات ولا يصل البرنامج إلى آخره. هذا الشكل المعطوب غير معروض في الأسفل.
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). الأعداد الأصغر تُكتب أولاً، لأن كل خطوة تنتظر حتى تنتهي الخطوة الداخلية.
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 أبداً. التوقف يعمل فوراً.
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.
تتبّع الأعداد
- ماذا يكتب البرنامج الأول، أولاً ثم بعد ذلك؟
- ماذا يكتب البرنامج الثاني، أولاً ثم بعد ذلك؟
- ماذا يكتب البرنامج الثالث؟
- تحذف التوقف عند 0. هل يصل البرنامج إلى آخره؟
ماذا يفعل down
الاسم down داخل down، مع n - 1، ينزل من 3 إلى 1. print قبل هذه الخطوة يكتب 3 ثم 2 ثم 1. print بعدها يكتب 1 ثم 2 ثم 3. if n == 0: return هو سبب انتهاء البرنامج. down(0) لا يكتب شيئاً.
🧠 اختبر معرفتك
اختبر معرفتك
تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع
📝 التعليمات
- اقرأ كل سؤال بعناية
- اختر أفضل إجابة لكل سؤال
- يمكنك إعادة الاختبار عدة مرات كما تريد
- سيتم عرض تقدمك في الأعلى