Skip to content

Commit 8c6b658

Browse files
author
Saeid
committed
*
1 parent 184938f commit 8c6b658

2 files changed

Lines changed: 20 additions & 1 deletion

File tree

_static/l14-factorial-relation.png

15.5 KB
Loading

lessons/l14.rst

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,12 @@
4949
120
5050
>>>
5151

52-
عموما می‌توان مسئله‌هایی که از **توالی** انجام یک **کار یکسان** قابل حل هستند را به صورت بازگشتی پیاده‌سازی کرد. مراحل اجرای نمونه کد بالا به صورت زیر است::
52+
عموما می‌توان مسئله‌هایی که از **توالی** انجام یک **کار یکسان** قابل حل هستند را به صورت بازگشتی پیاده‌سازی کرد. مراحل اجرای نمونه کد بالا به صورت زیر است:
53+
54+
.. image:: /_static/l14-factorial-relation.png
55+
:align: center
56+
57+
::
5358

5459
factorial(5)
5560
|--> 5 * factorial(4)
@@ -60,8 +65,22 @@
6065
6166
5 * (4 * (3 * (2 * 1)))
6267

68+
**توضیح:** هنگامی factorial(5) فراخوانی می‌شود (``n == 5``)، شرط ``1 => n`` رد و بخش
69+
6370
**پیاده‌سازی شیوه بازگشتی شاید به نظر هیجان‌انگیز باشد اما نباید فراموش کرد که میزان حافظه (Memory) زیادی مصرف می‌کند، اجرای آن زمان‌بر خواهد بود، درک جریان اجرای آن اغلب سخت است و اشکال‌زدایی (debug) آن ساده نخواهد بود!**
6471

72+
هر تابع بازگشتی شامل دو بخش مهم است:
73+
74+
* یک عبارت حاوی فراخوانی خود تابع
75+
* یک شرط برای انتخاب بین بازگشت (فراخوانی مجدد) و پایان
76+
77+
در مورد مثال محاسبه فاکتوریل، چنانچه شرط ``1 => n`` برقرار شود، عملیات به انتها می‌رسد.
78+
79+
80+
81+
82+
83+
6584

6685

6786

0 commit comments

Comments
 (0)