You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: lessons/l14.rst
+20-1Lines changed: 20 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -49,7 +49,12 @@
49
49
120
50
50
>>>
51
51
52
-
عموما میتوان مسئلههایی که از **توالی** انجام یک **کار یکسان** قابل حل هستند را به صورت بازگشتی پیادهسازی کرد. مراحل اجرای نمونه کد بالا به صورت زیر است::
52
+
عموما میتوان مسئلههایی که از **توالی** انجام یک **کار یکسان** قابل حل هستند را به صورت بازگشتی پیادهسازی کرد. مراحل اجرای نمونه کد بالا به صورت زیر است:
53
+
54
+
.. image:: /_static/l14-factorial-relation.png
55
+
:align:center
56
+
57
+
::
53
58
54
59
factorial(5)
55
60
|--> 5 * factorial(4)
@@ -60,8 +65,22 @@
60
65
61
66
5 * (4 * (3 * (2 * 1)))
62
67
68
+
**توضیح:** هنگامی factorial(5) فراخوانی میشود (``n == 5``)، شرط ``1 => n`` رد و بخش
69
+
63
70
**پیادهسازی شیوه بازگشتی شاید به نظر هیجانانگیز باشد اما نباید فراموش کرد که میزان حافظه (Memory) زیادی مصرف میکند، اجرای آن زمانبر خواهد بود، درک جریان اجرای آن اغلب سخت است و اشکالزدایی (debug) آن ساده نخواهد بود!**
64
71
72
+
هر تابع بازگشتی شامل دو بخش مهم است:
73
+
74
+
* یک عبارت حاوی فراخوانی خود تابع
75
+
* یک شرط برای انتخاب بین بازگشت (فراخوانی مجدد) و پایان
76
+
77
+
در مورد مثال محاسبه فاکتوریل، چنانچه شرط ``1 => n`` برقرار شود، عملیات به انتها میرسد.
0 commit comments