در حال بارگذاری...

تابعی که خودش را صدا می‌زند

نام down داخل خود down آمده است. down(3) اول 3 را می‌نویسد، بعد نوبت down(2) است، بعد down(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%
برای قبولی
♾️
∞
زمان
🔄
∞
تلاش‌ها

📝 دستورالعمل‌ها

  • هر سوال را با دقت بخوانید
  • بهترین پاسخ را برای هر سوال انتخاب کنید
  • می‌توانید آزمون را هر چند بار که می‌خواهید تکرار کنید
  • پیشرفت شما در بالا نمایش داده می‌شود