تابعی که خودش را صدا میزند
نام down داخل خود down آمده است. down(3) اول 3 را مینویسد، بعد نوبت down(2) است، بعد down(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) چیزی نمینویسد.
🧠 دانش خود را بیازمایید
دانش خود را بیازمایید
خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کردهاید
📝 دستورالعملها
- هر سوال را با دقت بخوانید
- بهترین پاسخ را برای هر سوال انتخاب کنید
- میتوانید آزمون را هر چند بار که میخواهید تکرار کنید
- پیشرفت شما در بالا نمایش داده میشود