در این مطلب، ویدئو آموزش بازگشت و یادآوری پایتون با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,030 –> 00:00:02,429
سلام بچه ها به یک ویدیوی دیگر از یوتیوب
2
00:00:02,429 –> 00:00:04,529
در ویدیوی امروز خوش آمدید. من قصد دارم
3
00:00:04,529 –> 00:00:06,210
در مورد یک تکنیک برنامه نویسی
4
00:00:06,210 –> 00:00:07,620
5
00:00:07,620 –> 00:00:10,160
به نام recursion صحبت
6
00:00:10,160 –> 00:00:13,259
7
00:00:13,259 –> 00:00:15,630
8
00:00:15,630 –> 00:00:17,279
کنم. بسیاری از مشکلات
9
00:00:17,279 –> 00:00:18,570
مانند چیزی که من
10
00:00:18,570 –> 00:00:19,830
در اینجا نشان خواهم داد که
11
00:00:19,830 –> 00:00:21,660
دنباله فیبوناچی است، بنابراین محاسبه
12
00:00:21,660 –> 00:00:24,810
N امین دنباله فیبوناچی یا عدد در آن
13
00:00:24,810 –> 00:00:27,660
دنباله فقط بر اساس یک ورودی داده شده
14
00:00:27,660 –> 00:00:30,840
خوب است، بنابراین بیایید همین الان شروع کنیم، بنابراین
15
00:00:30,840 –> 00:00:32,159
قبل از اینکه واقعاً در مورد بازگشت صحبت کنم.
16
00:00:32,159 –> 00:00:34,500
بیایید فقط فیبوناچی را بفهمیم زیرا
17
00:00:34,500 –> 00:00:35,820
این همان چیزی است که من در حال حاضر مثالی درباره آن انجام خواهم داد،
18
00:00:35,820 –> 00:00:37,380
بنابراین تقریباً یک
19
00:00:37,380 –> 00:00:40,440
دنباله فیبوناچی عبارت است از n ام
20
00:00:40,440 –> 00:00:43,620
برابر با n ام منهای یک جمله به اضافه
21
00:00:43,620 –> 00:00:45,719
n ام منهای دو جمله، بنابراین به عبارت ساده
22
00:00:45,719 –> 00:00:48,480
هشتم درست است. در اینجا که جمله
23
00:00:48,480 –> 00:00:49,980
ششم است برابر با جمله پنجم
24
00:00:49,980 –> 00:00:51,780
خواهد بود که 5 به علاوه جمله چهارم
25
00:00:51,780 –> 00:00:54,390
می شود که 3 می شود بنابراین 5 به علاوه 3 برابر
26
00:00:54,390 –> 00:00:56,520
با 8 است.
27
00:00:56,520 –> 00:00:59,070
که برابر است با جمله هفتم
28
00:00:59,070 –> 00:01:00,989
به اضافه جمله ششم که دوباره برابر است با
29
00:01:00,989 –> 00:01:04,830
21 بسیار ساده است، بنابراین اکنون
30
00:01:04,830 –> 00:01:06,510
بازگشت چیست و چگونه از آن برای
31
00:01:06,510 –> 00:01:09,180
حل این مشکل استفاده می کنیم، بنابراین با توجه به ترم n
32
00:01:09,180 –> 00:01:12,270
، آن مقدار چه مقدار است خوب است،
33
00:01:12,270 –> 00:01:14,640
بنابراین ما خواهیم بود استفاده از یک تابع و
34
00:01:14,640 –> 00:01:17,400
آنچه بازگشتی است تقریباً فراخوانی
35
00:01:17,400 –> 00:01:20,670
یک تابع در داخل تابع خودش است، بنابراین
36
00:01:20,670 –> 00:01:22,110
اگر یک تابع را نامگذاری کنید اگر یک
37
00:01:22,110 –> 00:01:23,759
تابع num را فراخوانی کنید، به این معنی است که شما
38
00:01:23,759 –> 00:01:26,700
آنها را در داخل num فراخوانی میکنید و من
39
00:01:26,700 –> 00:01:28,439
یک مثال را نشان میدهم. این خیلی واضح تر خواهد بود،
40
00:01:28,439 –> 00:01:31,170
بنابراین بیایید با تعریف یک
41
00:01:31,170 –> 00:01:33,060
تابع در این مورد شروع کنیم، من آن را
42
00:01:33,060 –> 00:01:36,659
fib می نامم و اکنون در پرانتز
43
00:01:36,659 –> 00:01:39,299
یک پارامتر به نام n به آن
44
00:01:39,299 –> 00:01:42,810
می دهم که عبارت عددی است. اکنون باید
45
00:01:42,810 –> 00:01:45,990
با استفاده از حالت پایه شروع کنید
46
00:01:45,990 –> 00:01:47,850
، این برای همه مشکلات بازگشتی مهم است این
47
00:01:47,850 –> 00:01:49,920
است که شما یک حالت پایه دارید که
48
00:01:49,920 –> 00:01:53,549
مقدار ثابتی را برمی گرداند، بنابراین
49
00:01:53,549 –> 00:01:56,250
حالت پایه ما در اینجا این است که اگر n کمتر یا
50
00:01:56,250 –> 00:02:00,920
مساوی 2 باشد، باید بازگشت
51
00:02:00,920 –> 00:02:07,259
متأسفانه مقدار 1 را پس میدهد، اگر
52
00:02:07,259 –> 00:02:09,060
کمتر از یا نباشد برابر با 2
53
00:02:09,060 –> 00:02:11,550
خوب چه چیزی را باید انجام دهیم که دقیقاً همان چیزی
54
00:02:11,550 –> 00:02:13,110
را که در بالا بیان کردم انجام دهیم
55
00:02:13,110 –> 00:02:16,460
و دنباله آن را بیان می کند، بنابراین
56
00:02:16,460 –> 00:02:21,300
باید دنباله فیبوناچی n منهای 1
57
00:02:21,300 –> 00:02:26,370
به اضافه دنباله فیبوناچی n منهای 2
58
00:02:26,370 –> 00:02:29,940
را برگردانیم، بنابراین اکنون این بسیار ساده به نظر می رسد
59
00:02:29,940 –> 00:02:32,580
و این به این دلیل است که اگر من
60
00:02:32,580 –> 00:02:34,680
اکنون سعی کنید دنباله فیبوناچی 8 را فراخوانی کنید
61
00:02:34,680 –> 00:02:37,290
، اتفاقی که قرار است بیفتد این است که ما به
62
00:02:37,290 –> 00:02:39,360
اینجا می رویم یا در واقع بیایید از 4 استفاده
63
00:02:39,360 –> 00:02:41,700
کنیم زیرا توضیح دادن آن آسان تر است
64
00:02:41,700 –> 00:02:44,280
ما اینجا خواهیم رفت بالا ما زیر n می رویم. برای 4
65
00:02:44,280 –> 00:02:46,680
می خواهیم بگوییم 4 کمتر یا مساوی
66
00:02:46,680 –> 00:02:48,240
است نه، بنابراین اینطور نیست، اکنون به
67
00:02:48,240 –> 00:02:50,310
اینجا می رویم و به دنبال
68
00:02:50,310 –> 00:02:54,959
فیبوناچی 3 به اضافه فیبوناچی 2 هستیم، اکنون
69
00:02:54,959 –> 00:02:57,570
فیبوناچی 3 را که می خواهیم صدا کنیم. این
70
00:02:57,570 –> 00:02:59,130
تابع دوباره در اینجا به سمت بالا حرکت می
71
00:02:59,130 –> 00:03:01,770
کنیم فیبوناچی 3 این است که کمتر یا
72
00:03:01,770 –> 00:03:03,330
مساوی 2 است، نه، بنابراین ما به پایین حرکت
73
00:03:03,330 –> 00:03:05,520
کردیم و می گوییم که فیبوناچی
74
00:03:05,520 –> 00:03:09,330
2 به اضافه فیبوناچی 1 است و سپس با
75
00:03:09,330 –> 00:03:11,820
آن در مورد ما اعمال می شود. مورد پایه
76
00:03:11,820 –> 00:03:16,170
بنابراین 1 در اینجا به اضافه 1 در اینجا خواهد بود که 2 می شود
77
00:03:16,170 –> 00:03:18,780
و اکنون فقط 3 محاسبه می شود
78
00:03:18,780 –> 00:03:20,700
بخش هایی که فقط این اولین فراخوانی
79
00:03:20,700 –> 00:03:23,580
روی 4 انجام شد، اکنون به
80
00:03:23,580 –> 00:03:25,709
فیبوناچی 2 می رویم زیرا 4 منهای 2 برابر 2 است
81
00:03:25,709 –> 00:03:28,440
که در مورد پایه ما اعمال می شود، بنابراین
82
00:03:28,440 –> 00:03:30,510
1 خواهد بود، ما قبلاً این مقدار را محاسبه کرده ایم
83
00:03:30,510 –> 00:03:32,970
که 2 2 به علاوه است. 1 برابر است با 3 و
84
00:03:32,970 –> 00:03:34,470
این مقدار در اینجا برای ترم چهارم است،
85
00:03:34,470 –> 00:03:36,570
بنابراین من به شما نشان خواهم داد که وقتی
86
00:03:36,570 –> 00:03:39,209
برنامه را به این صورت اجرا می کنم کار می کند و فراموش کردم
87
00:03:39,209 –> 00:03:42,209
آن را روی صفحه چاپ کنم ok بنابراین اکنون
88
00:03:42,209 –> 00:03:46,050
آن را روی صفحه چاپ خواهم
89
00:03:46,050 –> 00:03:48,930
کرد. ما می رویم ما مقدار 3 را دریافت می کنیم
90
00:03:48,930 –> 00:03:50,310
اکنون همه اینها عالی است، اما من می خواهم مشکلی را به شما نشان دهم
91
00:03:50,310 –> 00:03:51,959
که اتفاق می افتد بنابراین ما می خواهیم
92
00:03:51,959 –> 00:03:54,030
فیبوناچی 10 را اجرا کنیم، خواهید دید که خیلی سریع اجرا می شود
93
00:03:54,030 –> 00:03:57,260
و تا حدود 20
94
00:03:57,260 –> 00:03:59,519
همه چیز به آرامی اجرا می شود. حالا
95
00:03:59,519 –> 00:04:01,410
چه اتفاقی میافتد اگر بخواهم عدد بزرگتری
96
00:04:01,410 –> 00:04:05,810
مثل 35 را وارد کنم، برنامه
97
00:04:05,810 –> 00:04:09,000
برای همیشه طول میکشد، بنابراین میدانم که یک عدد
98
00:04:09,000 –> 00:04:11,190
خیلی طولانی نبود، اما به
99
00:04:11,190 –> 00:04:13,200
آن زمان فکر کنید تا شاید پنج
100
00:04:13,200 –> 00:04:15,480
ثانیه طول بکشد تا آن عدد را به دست آوریم چه میشود اگر
101
00:04:15,480 –> 00:04:20,700
من به سمت 38 می روم و اکنون به طور مداوم در
102
00:04:20,700 –> 00:04:23,630
حال بارگذاری هستیم زیرا زمان محاسبه
103
00:04:23,630 –> 00:04:25,889
e رسیده است به طور نمایی طولانی تر
104
00:04:25,889 –> 00:04:28,199
و این مشکل مربوط به بازگشت
105
00:04:28,199 –> 00:04:30,240
در سطح پایه است، بنابراین می توانید ببینید
106
00:04:30,240 –> 00:04:31,949
که ما اکنون پاسخ خود را دریافت کرده ایم که
107
00:04:31,949 –> 00:04:35,340
برای این برنامه به نوعی غیرقابل قبول است، بنابراین چگونه
108
00:04:35,340 –> 00:04:37,680
می توانیم این مشکل را برطرف کنیم و چگونه می توانیم
109
00:04:37,680 –> 00:04:39,629
اجرای آن را بسیار سریعتر کنیم و چرا آیا سرعت
110
00:04:39,629 –> 00:04:41,310
آن خیلی کند است، دلیل آن این
111
00:04:41,310 –> 00:04:43,169
است که ما دائماً در حال
112
00:04:43,169 –> 00:04:47,340
محاسبه مجدد پاسخ ها هستیم و هر بار که
113
00:04:47,