1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
1
00:00:00,000 --> 00:00:05,587

2
00:00:05,587 --> 00:00:07,670
داگ لوید: اگر شما را دیده ام
ویدئو در بازگشت،

3
00:00:07,670 --> 00:00:10,170
کل فرایند ممکن است
به نظر می رسید کمی جادویی.

4
00:00:10,170 --> 00:00:10,930
چگونه کار می کند؟

5
00:00:10,930 --> 00:00:15,010
چگونه توابع می دانیم که آنها
نیاز به صبر و صبر کنید برای یکی دیگر از ارزش

6
00:00:15,010 --> 00:00:19,150
به بازگشت از یک تابع های مختلف
پاسخ به منظور رسیدن به نتیجه ما می خواهیم؟

7
00:00:19,150 --> 00:00:22,550
>> خوب، دلیل این کار این است به دلیل
از چیزی شناخته شده به عنوان پاسخ پشته.

8
00:00:22,550 --> 00:00:26,360
هنگامی که شما یک تابع تماس،
سیستم مجموعه کنار فضا در حافظه

9
00:00:26,360 --> 00:00:28,120
برای آن تابع به کار آن است.

10
00:00:28,120 --> 00:00:31,720
و ما این تکه از حافظه که پاسخ
در حال کنار گذاشته برای هر تابع مجموعه

11
00:00:31,720 --> 00:00:35,670
یک قاب پشته و یا یک قاب تابع.

12
00:00:35,670 --> 00:00:38,290
و همانطور که انتظار می رود،
این قاب پشته

13
00:00:38,290 --> 00:00:41,000
در بخشی از حافظه پشته زندگی می کنند.

14
00:00:41,000 --> 00:00:43,960

15
00:00:43,960 --> 00:00:47,540
>> بیش از یک تابع قاب پشته
می توانید در حافظه در یک زمان معین وجود داشته باشد.

16
00:00:47,540 --> 00:00:51,240
اگر خواستار یک حرکت اصلی تابع،
و حرکت می نامد جهت،

17
00:00:51,240 --> 00:00:54,460
هر سه توابع دارای قاب باز است.

18
00:00:54,460 --> 00:00:57,350
اما آنها فریم فعال است همه.

19
00:00:57,350 --> 00:00:59,410
این قاب ها در یک پشته مرتب شده اند.

20
00:00:59,410 --> 00:01:01,820
و قاب از
اخیرا به نام

21
00:01:01,820 --> 00:01:04,390
تابع است که همیشه در بالای پشته.

22
00:01:04,390 --> 00:01:07,150
و این کار همیشه قاب فعال است.

23
00:01:07,150 --> 00:01:10,420
فقط واقعا تا کنون کسی وجود
تابع است که فعال در یک زمان.

24
00:01:10,420 --> 00:01:12,420
این یکی در بالای پشته است.

25
00:01:12,420 --> 00:01:17,620
>> هنگامی که یک تابع دیگر خواستار
تابع، آن نوع از پرس مکث.

26
00:01:17,620 --> 00:01:20,590
این نوع از است در انتظار، در انتظار است.

27
00:01:20,590 --> 00:01:24,050
و قاب پشته دیگری تحت فشار قرار دادند
بر روی پشته در بالای آن.

28
00:01:24,050 --> 00:01:26,150
و قاب فعال می شود.

29
00:01:26,150 --> 00:01:28,600
و قاب بلافاصله
در زیر آن نیاز به صبر

30
00:01:28,600 --> 00:01:33,560
تا زمانی که دوباره قاب فعال
قبل از آن می توانید کار خود را از سر گرفت.

31
00:01:33,560 --> 00:01:35,870
زمانی که یک تابع است
کامل و آن را انجام داده،

32
00:01:35,870 --> 00:01:37,720
قاب آن است از پشته.

33
00:01:37,720 --> 00:01:38,950
که اصطلاحات است.

34
00:01:38,950 --> 00:01:41,110
و قاب بلافاصله
در زیر آن، همانطور که گفتم،

35
00:01:41,110 --> 00:01:42,880
قاب جدید فعال شود.

36
00:01:42,880 --> 00:01:45,960
>> و اگر آن را تابع دیگر را خواند،
آن را به مکث دوباره.

37
00:01:45,960 --> 00:01:49,290
قاب پشته که تابع نو
توان بر روی بالای پشته قرار.

38
00:01:49,290 --> 00:01:50,650
کار خود را انجام دهد.

39
00:01:50,650 --> 00:01:52,100
این ممکن است خاموش پاپ.

40
00:01:52,100 --> 00:01:55,630
و تابع دیگر
زیر آن را دوباره می توانید از سر گرفت.

41
00:01:55,630 --> 00:02:00,080
>> بنابراین اجازه دهید از طریق این دوباره، به دنبال
در این ایده از تابع فاکتوریل

42
00:02:00,080 --> 00:02:03,070
که ما در تعریف
فیلم بازگشتی به دیدن

43
00:02:03,070 --> 00:02:07,770
دقیقا چگونه سحر و جادو در پشت این
روند بازگشتی در حال وقوع است.

44
00:02:07,770 --> 00:02:09,870
بنابراین این فایل کامل است، درست است؟

45
00:02:09,870 --> 00:02:14,000
ما دو تعریف
functions-- اصلی و واقعیت است.

46
00:02:14,000 --> 00:02:15,980
و همانطور که ما ممکن است انتظار،
هر برنامه C است که

47
00:02:15,980 --> 00:02:18,470
در خط اول اصلی شروع می شود.

48
00:02:18,470 --> 00:02:21,660
>> بنابراین ما یک قاب پشته جدید برای اصلی ایجاد کنید.

49
00:02:21,660 --> 00:02:23,320
و آن را برای شروع در حال اجرا.

50
00:02:23,320 --> 00:02:25,270
تماس اصلی printf است.

51
00:02:25,270 --> 00:02:29,390
و تابع () printf است که به
نسخه قابل چاپ کردن فاکتوریل 5.

52
00:02:29,390 --> 00:02:31,440
خوب، آن را نمی داند
چه عاملی 5،

53
00:02:31,440 --> 00:02:35,620
و بنابراین این پاسخ در حال حاضر
بسته به یکی دیگر از فراخوانی تابع است.

54
00:02:35,620 --> 00:02:37,270
بنابراین اصلی است که به مکث سمت راست وجود دارد.

55
00:02:37,270 --> 00:02:39,103
من میخوام ترک هستم آن
فلش سمت راست وجود دارد، رنگ

56
00:02:39,103 --> 00:02:41,360
آن همان رنگ به عنوان
پشته قاب در سمت راست،

57
00:02:41,360 --> 00:02:47,720
نشان می دهد که اصلی است که به یخ
اینجا در حالی که فاکتوریل 5 نامیده می شود.

58
00:02:47,720 --> 00:02:49,300
>> بنابراین فاکتوریل 5 نامیده می شود.

59
00:02:49,300 --> 00:02:53,160
و آن را برای شروع در بسیار
آغاز از تابع فاکتوریل.

60
00:02:53,160 --> 00:02:55,440
آن را می پرسد سوال من برابر با 1.

61
00:02:55,440 --> 00:02:56,810
است 5-1 برابر است؟

62
00:02:56,810 --> 00:02:57,410
خب نه.

63
00:02:57,410 --> 00:03:01,110
طوری که آن را به پایین به
دیگری بخشی، بازگشت n بار

64
00:03:01,110 --> 00:03:02,990
فاکتوریل n منهای 1.

65
00:03:02,990 --> 00:03:03,490
خب باشه.

66
00:03:03,490 --> 00:03:07,070
>> بنابراین در حال حاضر، فاکتوریل از 5 است
بسته به تماس دیگر

67
00:03:07,070 --> 00:03:09,740
به فاکتوریل، عبور
در 4 عنوان پارامتر.

68
00:03:09,740 --> 00:03:14,210
و به این ترتیب فاکتوریل
5 قاب، قاب که قرمز،

69
00:03:14,210 --> 00:03:17,160
در حال رفتن به سمت راست وجود دارد منجمد
که در آن خط نشان دادم

70
00:03:17,160 --> 00:03:21,914
و منتظر فاکتوریل 4 به پایان برساند
آنچه در آن نیاز به انجام این کار است که پس از آن

71
00:03:21,914 --> 00:03:23,330
می توانید قاب را دوباره فعال می شود.

72
00:03:23,330 --> 00:03:26,890
>> بنابراین از 4 شروع می شود فاکتوریل در
آغاز فاکتوریل.

73
00:03:26,890 --> 00:03:28,556
است 4-1 برابر است؟

74
00:03:28,556 --> 00:03:30,180
نه، تا آن را به انجام همان چیزی.

75
00:03:30,180 --> 00:03:31,590
آن را به پایین شاخه دیگری.

76
00:03:31,590 --> 00:03:33,240
آن را برای رسیدن به آن خط از کد.

77
00:03:33,240 --> 00:03:35,710
خوب، من قصد دارم به بازگشت چهار بار.

78
00:03:35,710 --> 00:03:41,270
اوه، فاکتوریل 3-- پس از فاکتوریل
4 بستگی به عاملی 3 به پایان رساندن.

79
00:03:41,270 --> 00:03:43,055
>> و پس از آن نیاز به فاکتوریل 3 پاسخ.

80
00:03:43,055 --> 00:03:45,180
و که میخوام از طریق رفتن
این فرآیند را دوباره همان.

81
00:03:45,180 --> 00:03:48,200
این شروع می شود از طریق، می شود در اینجا.

82
00:03:48,200 --> 00:03:50,980
عاملی بستگی دارد 3
در فاکتوریل، از مجموع 1

83
00:03:50,980 --> 00:03:53,750
بنابراین فاکتوریل 2 شروع می شود، می شود در اینجا.

84
00:03:53,750 --> 00:03:56,310
آن را بر روی فاکتوریل 1 بستگی دارد.

85
00:03:56,310 --> 00:03:57,430
عاملی 1 شروع می شود.

86
00:03:57,430 --> 00:03:57,650
>> باشه.

87
00:03:57,650 --> 00:03:59,775
بنابراین در حال حاضر، ما در حال گرفتن
جایی جالب، درست است؟

88
00:03:59,775 --> 00:04:02,190
بنابراین در حال حاضر، از 1 به 1 برابر است.

89
00:04:02,190 --> 00:04:05,130
و بنابراین ما بازگشت 1.

90
00:04:05,130 --> 00:04:06,770
در این مرحله، ما در حال بازگشت.

91
00:04:06,770 --> 00:04:07,880
تابع انجام می شود.

92
00:04:07,880 --> 00:04:11,140
رفتار آن را is-- وجود دارد
هیچ چیز دیگری برای آن را به انجام،

93
00:04:11,140 --> 00:04:17,006
و به همین ترتیب قاب پشته برای
فاکتوریل 1 میآید کردن.

94
00:04:17,006 --> 00:04:17,589
تمام شد.

95
00:04:17,589 --> 00:04:19,480
این بازگشت 1.

96
00:04:19,480 --> 00:04:23,370
و در حال حاضر، فاکتوریل 2، که
قاب بلافاصله در زیر آن بود

97
00:04:23,370 --> 00:04:26,160
در پشته، قاب فعال می شود.

98
00:04:26,160 --> 00:04:29,030
>> و آن را می توانید انتخاب کنید
دقیقا همان جایی که آن را ترک کردن.

99
00:04:29,030 --> 00:04:32,240
این شده است که در انتظار یک فاکتوریل
از 1 به پایان کار آن است.

100
00:04:32,240 --> 00:04:33,610
این در حال حاضر به پایان رسید.

101
00:04:33,610 --> 00:04:35,510
و بنابراین در اینجا ما می باشد.

102
00:04:35,510 --> 00:04:38,080
>> عاملی 1 مقدار 1 بازگشت.

103
00:04:38,080 --> 00:04:42,430
بنابراین فاکتوریل 2 را می
بگو 2 بار 1 بازگشت.

104
00:04:42,430 --> 00:04:43,680
کار خود را در حال حاضر انجام شده است.

105
00:04:43,680 --> 00:04:49,110
آن را بازگشت به فاکتوریل 2
3، که در انتظار بود برای آن است.

106
00:04:49,110 --> 00:04:53,370
عاملی 3 در حال حاضر قاب بالا،
قاب فعال در پشته.

107
00:04:53,370 --> 00:04:58,617
و پس از آن می گوید، خوب، خوب، من قصد دارم
به بازگشت 3 بار 2 است، که 6.

108
00:04:58,617 --> 00:05:00,700
و من قصد دارم به من بدهید که
ارزش برگشت به فاکتوریل

109
00:05:00,700 --> 00:05:03,430
از 4، است که انتظار برای من.

110
00:05:03,430 --> 00:05:04,500
من انجام می شود.

111
00:05:04,500 --> 00:05:09,410
عاملی 3 میآید را از پشته، و
فاکتوریل 4 در حال حاضر قاب فعال است.

112
00:05:09,410 --> 00:05:13,510
>> 4 می گوید: خوب، من قصد دارم به بازگشت 4 بار
فاکتوریل 3، که شش سال داشت.

113
00:05:13,510 --> 00:05:15,980
که از ارزش این بود که
فاکتوریل 3 بازگشت.

114
00:05:15,980 --> 00:05:19,010
و به این ترتیب 4 بار 6 24 است.

115
00:05:19,010 --> 00:05:20,990
و من قصد دارم به تصویب
که به فاکتوریل

116
00:05:20,990 --> 00:05:23,160
از 5، است که انتظار برای من.

117
00:05:23,160 --> 00:05:25,270
عاملی 5 در حال حاضر قاب فعال است.

118
00:05:25,270 --> 00:05:30,700
آن را به بازگشت 5 بار
فاکتوریل 4-- 5 بار 24 یا 120--

119
00:05:30,700 --> 00:05:32,722
و که ارزش
برگشت به بخش اصلی است، که

120
00:05:32,722 --> 00:05:35,680
شده است در انتظار بسیار با صبر و حوصله برای
مدت زمان طولانی در پایین پشته.

121
00:05:35,680 --> 00:05:36,640
>> آن را که در آن آغاز شده است.

122
00:05:36,640 --> 00:05:37,670
از آن ساخته شده این تماس.

123
00:05:37,670 --> 00:05:39,400
چند قاب بیش از در بالای گرفت.

124
00:05:39,400 --> 00:05:41,890
در حال حاضر تماس در بالای پشته است.

125
00:05:41,890 --> 00:05:43,450
این قاب فعال است.

126
00:05:43,450 --> 00:05:47,810
بنابراین اصلی کردم ارزش 120
از فاکتوریل 5.

127
00:05:47,810 --> 00:05:50,750
این شده است در انتظار
نسخه قابل چاپ کردن که ارزش.

128
00:05:50,750 --> 00:05:51,657
و سپس آن را انجام داده است.

129
00:05:51,657 --> 00:05:53,240
هیچ خط از کد را در اصلی وجود دارد.

130
00:05:53,240 --> 00:05:56,800
بنابراین قاب اصلی را بالا میآید کردن
پشته، و ما در حال انجام است.

131
00:05:56,800 --> 00:05:58,992
>> و این که چگونه بازگشتی کار می کند.

132
00:05:58,992 --> 00:06:00,200
این که چگونه قاب پشته کار می کنند.

133
00:06:00,200 --> 00:06:03,120
کسانی که خواستار عملکرد
که قبلا اتفاق افتاده

134
00:06:03,120 --> 00:06:06,620
فقط در مکث، انتظار
برای تماس های بعدی

135
00:06:06,620 --> 00:06:12,050
را به پایان برساند به طوری که آنها می توانید فعال شوند
قاب و پایان آنچه را که آنها باید انجام دهید.

136
00:06:12,050 --> 00:06:13,060
>> من داگ لوید هستم.

137
00:06:13,060 --> 00:06:14,880
این CS50 است.

138
00:06:14,880 --> 00:06:16,580