1 00:00:00,000 --> 00:00:05,860 >> [MUSIC PLAYING] 2 00:00:05,860 --> 00:00:09,530 >> DOUG LLOYD: Siz yəqin ki, hesab edirəm ki, code yalnız bir tapşırıq yerinə yetirmək üçün istifadə olunur. 3 00:00:09,530 --> 00:00:10,450 Siz onu yazmaq. 4 00:00:10,450 --> 00:00:11,664 Bu bir şey yoxdur. 5 00:00:11,664 --> 00:00:12,580 Yəni, bu, olduqca çox var. 6 00:00:12,580 --> 00:00:13,160 >> Siz tərtib edir. 7 00:00:13,160 --> 00:00:13,993 Siz proqram run. 8 00:00:13,993 --> 00:00:15,370 Siz getmək iyi. 9 00:00:15,370 --> 00:00:17,520 >> Lakin iman və ya, əgər Siz uzun müddət kod 10 00:00:17,520 --> 00:00:20,550 Siz, həqiqətən, görmək üçün gəlmək bilər gözəl bir şey kimi kodu. 11 00:00:20,550 --> 00:00:23,275 Bu problem həll edir çox maraqlı bir şəkildə, 12 00:00:23,275 --> 00:00:26,510 və ya, həqiqətən, yalnız bir şey var görünür yolu haqqında səliqəli. 13 00:00:26,510 --> 00:00:28,750 Siz laughing ola bilər Mənə, ancaq bu doğru deyil. 14 00:00:28,750 --> 00:00:31,530 Və recursion bir yoldur sort bu fikir almaq üçün 15 00:00:31,530 --> 00:00:34,090 gözəl, zərif görünüşlü kodu. 16 00:00:34,090 --> 00:00:37,740 Bu yolla problemləri həll ki, , görüntüləmək üçün asan, maraqlı 17 00:00:37,740 --> 00:00:39,810 və təəccüblü qısa. 18 00:00:39,810 --> 00:00:43,190 >> yol recursion işləri bir recursive funksiyası var 19 00:00:43,190 --> 00:00:49,291 çağırır funksiyası kimi müəyyən edilir özü icra hissəsi kimi. 20 00:00:49,291 --> 00:00:51,790 Ki, bir az qəribə görünə bilər və biz bir az görürsünüz 21 00:00:51,790 --> 00:00:53,750 bu bir anda necə haqqında. 22 00:00:53,750 --> 00:00:55,560 Ancaq yenə də, bu recursive prosedurları var 23 00:00:55,560 --> 00:00:57,730 belə zərif olacaq onlar olacaq, çünki 24 00:00:57,730 --> 00:01:00,410 olmadan bu problemi həll etmək üçün Bütün bu digər funksiyaları olan 25 00:01:00,410 --> 00:01:02,710 və ya bu uzun loops. 26 00:01:02,710 --> 00:01:06,310 Siz bu recursive ki, görürsünüz prosedurları belə qısa baxmaq üçün gedir. 27 00:01:06,310 --> 00:01:10,610 Onlar həqiqətən etmək üçün gedir Sizin code daha çox gözəl baxmaq. 28 00:01:10,610 --> 00:01:12,560 >> Mən sizə bir nümunə verim Bu necə 29 00:01:12,560 --> 00:01:14,880 bir recursive proseduru müəyyən edilə bilər. 30 00:01:14,880 --> 00:01:18,202 Bu ilə tanış değilseniz belə illər əvvəl math sinif 31 00:01:18,202 --> 00:01:20,910 bir şey var deyirlər adətən faktöryel funksiyası, 32 00:01:20,910 --> 00:01:25,340 bir ünlem kimi qeydi olan bütün müsbət tam ədədlər üzərində müəyyən edilir. 33 00:01:25,340 --> 00:01:28,850 Və yol ki, n faktöryel hesablanır 34 00:01:28,850 --> 00:01:31,050 Siz bütün çoxaltmaq edilir daha nömrələri az 35 00:01:31,050 --> 00:01:33,750 və ya bərabər n together-- üçün bütün integers az 36 00:01:33,750 --> 00:01:34,880 və ya birlikdə n bərabər. 37 00:01:34,880 --> 00:01:39,850 >> Belə ki, 5 faktöryel 5 dəfə 4 dəfə 3 dəfə 2 dəfə 1. 38 00:01:39,850 --> 00:01:43,020 And 4 faktöryel 4 dəfə 3 dəfə 2 dəfə 1 və s. 39 00:01:43,020 --> 00:01:44,800 Siz fikir almaq. 40 00:01:44,800 --> 00:01:47,060 >> Proqramçılar kimi, biz deyil n, ünlem istifadə edin. 41 00:01:47,060 --> 00:01:51,840 Beləliklə, biz faktöryel müəyyən edəcəyik n fakt kimi fəaliyyət göstərir. 42 00:01:51,840 --> 00:01:56,897 Və biz yaratmaq üçün faktöryel istifadə edəcəyik bir problemin recursive həlli. 43 00:01:56,897 --> 00:01:59,230 Mən tapa bilər edirəm Bu daha çox vizual ki, 44 00:01:59,230 --> 00:02:02,380 iterativ artıq müraciət Bu versiyası olan 45 00:02:02,380 --> 00:02:05,010 biz də bir anda nəzər lazımdır. 46 00:02:05,010 --> 00:02:08,310 >> Belə ki, burada bir neçə facts-- pun intended-- 47 00:02:08,310 --> 00:02:10,169 haqqında factorial-- faktöryel funksiyası. 48 00:02:10,169 --> 00:02:13,090 Dediyim kimi 1 faktöryel, 1. 49 00:02:13,090 --> 00:02:15,690 2 faktöryel 2 dəfə 1. 50 00:02:15,690 --> 00:02:18,470 3 faktöryel 3 dəfə 2 belə dəfə 1, və. 51 00:02:18,470 --> 00:02:20,810 Biz artıq 4 və 5 bəhs etdi. 52 00:02:20,810 --> 00:02:23,940 >> Amma bu baxaraq, bu doğru deyil? 53 00:02:23,940 --> 00:02:28,220 2 faktöryel deyil, yalnız 2 dəfə 1 faktöryel? 54 00:02:28,220 --> 00:02:31,130 Mən demək, 1 faktöryel 1. 55 00:02:31,130 --> 00:02:34,940 Belə ki, niyə biz yalnız demək olmaz ki, 2 faktöryel 2 dəfə 1-ci ildən, 56 00:02:34,940 --> 00:02:38,520 Bu, həqiqətən, yalnız 2 dəfə var 1 faktöryel? 57 00:02:38,520 --> 00:02:40,900 >> Və sonra, ki, fikir uzanan 3 faktöryel deyil 58 00:02:40,900 --> 00:02:44,080 yalnız 3 dəfə 2 faktöryel? 59 00:02:44,080 --> 00:02:50,350 Və 4 faktöryel 4 dəfə belə 3 və faktöryel? 60 00:02:50,350 --> 00:02:52,530 Əslində, faktöryel hər hansı bir sayı yalnız bilərsiniz 61 00:02:52,530 --> 00:02:54,660 cür əgər ifadə əbədi bu həyata keçirir. 62 00:02:54,660 --> 00:02:56,870 Biz növ ümumiləşdirmək bilər faktöryel problem 63 00:02:56,870 --> 00:02:59,910 bu kimi n dəfə n minus 1 faktöryel. 64 00:02:59,910 --> 00:03:04,840 Bu n dəfə məhsul var bütün nömrələri mənə az. 65 00:03:04,840 --> 00:03:08,890 >> Bu fikir, bu Problemin ümumiləşdirilməsi, 66 00:03:08,890 --> 00:03:13,410 Bizə recursively üçün imkan verir faktöryel funksiyası müəyyən edir. 67 00:03:13,410 --> 00:03:15,440 Bir funksiyası müəyyən zaman recursively var 68 00:03:15,440 --> 00:03:17,470 Bunun bir hissəsi olmaq üçün lazım olan iki şey. 69 00:03:17,470 --> 00:03:20,990 Siz bir şey deyilən lazımdır baza halda, hansı, siz onu tetiklemek zaman, 70 00:03:20,990 --> 00:03:22,480 recursive prosesi dayanacaq. 71 00:03:22,480 --> 00:03:25,300 >> Əks halda, bir funksiyası çağırır özü siz imagine-- bilər 72 00:03:25,300 --> 00:03:26,870 əbədi davam edə bilər. 73 00:03:26,870 --> 00:03:29,047 Function funksiyasını çağırır funksiyası zənglər çağırır 74 00:03:29,047 --> 00:03:30,380 funksiyası funksiyası çağırır. 75 00:03:30,380 --> 00:03:32,380 Bir yol yoxsa , proqram dayandırmaq üçün 76 00:03:32,380 --> 00:03:34,760 səmərəli vurulmuş olunacaq sonsuz loop edir. 77 00:03:34,760 --> 00:03:37,176 Bu, nəticədə qəza edəcək Bu yaddaş tökülmək lazımdır, çünki. 78 00:03:37,176 --> 00:03:38,990 Amma bu nöqtədə başqa var. 79 00:03:38,990 --> 00:03:42,210 >> Biz dayandırmaq üçün bəzi digər yol lazımdır proqram şaqqıltılı başqa şeylər 80 00:03:42,210 --> 00:03:46,010 Yeməyini bir proqramdır, çünki yəqin ki, gözəl və ya zərif deyil. 81 00:03:46,010 --> 00:03:47,690 Və belə ki, biz bu əsas işi çağırırıq. 82 00:03:47,690 --> 00:03:50,610 Bu sadə həll edir Nöqtə bir problem 83 00:03:50,610 --> 00:03:52,770 meydana gələn recursive prosesi. 84 00:03:52,770 --> 00:03:55,220 Belə ki, bir hissəsi var bir recursive funksiyası. 85 00:03:55,220 --> 00:03:56,820 >> ikinci hissəsi recursive haldır. 86 00:03:56,820 --> 00:03:59,195 Bu harada recursion edir həqiqətən keçiriləcək. 87 00:03:59,195 --> 00:04:02,200 Bu harada funksiyası özü zəng edəcək. 88 00:04:02,200 --> 00:04:05,940 >> Məhz özünü zəng deyil Eyni şəkildə bu adlanırdı. 89 00:04:05,940 --> 00:04:08,880 Bu cüzi variasiya olacaq ki, bu problem edir 90 00:04:08,880 --> 00:04:11,497 bir ufacık az kiçik həll etməyə çalışırıq. 91 00:04:11,497 --> 00:04:14,330 Amma ümumiyyətlə dollar keçir həlli hissəsini həll 92 00:04:14,330 --> 00:04:17,450 xətti aşağı fərqli zəng. 93 00:04:17,450 --> 00:04:20,290 >> Bu görünüşü hansı Burada əsas halda kimi? 94 00:04:20,290 --> 00:04:25,384 Hansı kimi bu görünür bir bir problem üçün sadə həll? 95 00:04:25,384 --> 00:04:27,550 Biz factorials bir dəstə var, və davam edə bilər 96 00:04:27,550 --> 00:04:30,470 belə Us 6, 7, 8, 9, 10, və gedir. 97 00:04:30,470 --> 00:04:34,130 >> Amma kimi bu görünür bir yaxşı hal baza halda olmaq. 98 00:04:34,130 --> 00:04:35,310 Bu, çox sadə həll edir. 99 00:04:35,310 --> 00:04:37,810 Biz xüsusi bir şey yoxdur. 100 00:04:37,810 --> 00:04:40,560 >> 1 faktöryel yalnız 1-dir. 101 00:04:40,560 --> 00:04:42,790 Biz heç nə yoxdur vurma bütün. 102 00:04:42,790 --> 00:04:45,248 Gedirik əgər kimi görünür cəhd və bu problemi həll etmək, 103 00:04:45,248 --> 00:04:47,600 və biz dayandırmaq lazımdır haradasa Recursion, 104 00:04:47,600 --> 00:04:50,610 biz yəqin ki, dayandırmaq istəyirəm biz 1 almaq zaman. 105 00:04:50,610 --> 00:04:54,580 Biz bundan əvvəl dayandırmaq istəmirəm. 106 00:04:54,580 --> 00:04:56,660 >> Biz müəyyən edirik Belə ki Bizim faktöryel funksiyası, 107 00:04:56,660 --> 00:04:58,690 Burada bir skelet üçün var biz bunu necə. 108 00:04:58,690 --> 00:05:03,110 Biz o iki şey plug lazımdır baza halda və recursive halda. 109 00:05:03,110 --> 00:05:04,990 Baza halda nədir? 110 00:05:04,990 --> 00:05:10,150 N 1 bərabər deyil, qayıtmaq 1 var ki həqiqətən sadə problem həll etsin. 111 00:05:10,150 --> 00:05:11,890 >> 1 faktöryel 1. 112 00:05:11,890 --> 00:05:13,860 Bu 1 dəfə bir şey var. 113 00:05:13,860 --> 00:05:15,020 Bu, sadəcə 1 var. 114 00:05:15,020 --> 00:05:17,170 Bu, çox asan faktdır. 115 00:05:17,170 --> 00:05:19,620 Və belə ki, bizim əsas işi ola bilər. 116 00:05:19,620 --> 00:05:24,730 Biz bu 1 keçdi almaq funksiyası, biz yalnız 1 qayıtmaq lazımdır. 117 00:05:24,730 --> 00:05:27,320 >> Recursive nədir hal yəqin ki, kimi baxmaq? 118 00:05:27,320 --> 00:05:32,445 Hər sayı üçün 1 Bundan başqa, model nədir? 119 00:05:32,445 --> 00:05:35,780 Yaxşı, biz qəbul edirsinizsə n faktöryel, 120 00:05:35,780 --> 00:05:38,160 bu n dəfə n faktöryel minus 1. 121 00:05:38,160 --> 00:05:42,130 >> Biz 3 faktöryel alaraq edirsinizsə, Bu, 3 minus 1 3 dəfə faktöryel 122 00:05:42,130 --> 00:05:43,070 və ya 2. 123 00:05:43,070 --> 00:05:47,330 Və biz deyilik əgər başqa, 1 baxaraq 124 00:05:47,330 --> 00:05:51,710 qaytarılması n dəfə n minus 1 faktöryel. 125 00:05:51,710 --> 00:05:53,210 Bu olduqca sadə. 126 00:05:53,210 --> 00:05:57,360 >> Və az olan naminə təmiz və kodu daha zərif, 127 00:05:57,360 --> 00:06:01,440 bilirik ki, biz bir-line loops varsa və ya bir-line şərti filialları, 128 00:06:01,440 --> 00:06:04,490 Biz bütün xilas edə bilərsiniz onların ətrafında qıvrım aşırma. 129 00:06:04,490 --> 00:06:06,850 Beləliklə, biz bu bu birləşdirmək olar. 130 00:06:06,850 --> 00:06:09,640 Bu eyni var bu kimi funksionallıq. 131 00:06:09,640 --> 00:06:13,850 >> Mən yalnız buruq üz alaraq alıram yalnız bir xətt var, çünki, aşırma 132 00:06:13,850 --> 00:06:18,500 həmin şərti filial daxilində. 133 00:06:18,500 --> 00:06:21,160 Belə ki, bu eyni davranırlar. 134 00:06:21,160 --> 00:06:23,800 N 1 bərabər deyil, 1 qayıtmaq. 135 00:06:23,800 --> 00:06:28,351 Əks halda n dəfə qayıtmaq n minus 1 faktöryel. 136 00:06:28,351 --> 00:06:29,850 Belə ki, biz kiçik problem edirik. 137 00:06:29,850 --> 00:06:33,850 N 5 kimi başlayır, biz olacaq 4 5 dəfə faktöryel qayıtmaq. 138 00:06:33,850 --> 00:06:37,100 Və biz danışmaq zaman bir dəqiqə görürsünüz başqa video zəng yığını haqqında 139 00:06:37,100 --> 00:06:39,390 biz haqqında danışmaq biz öyrənmək lazımdır yığını zəng 140 00:06:39,390 --> 00:06:41,630 məhz bu prosesi işləri niyə. 141 00:06:41,630 --> 00:06:46,970 >> Amma 5 isə faktöryel deyir 5 dəfə faktöryel 4 qayıtmaq və 4 142 00:06:46,970 --> 00:06:49,710 yaxşı, OK, demək gedir, geri 4 dəfə 3 faktöryel. 143 00:06:49,710 --> 00:06:51,737 Gördüyünüz kimi, biz istəyirik sort 1-yaxınlaşır. 144 00:06:51,737 --> 00:06:53,820 Biz yaxın əldə edirik və ki, baza halda yaxın. 145 00:06:53,820 --> 00:06:58,180 >> Və biz baza halda hit bir dəfə, əvvəlki funksiyaları bütün 146 00:06:58,180 --> 00:07:00,540 onlar aradığınız cavab var. 147 00:07:00,540 --> 00:07:03,900 2 faktöryel qaytarılması deyirdi 2 dəfə 1 faktöryel. 148 00:07:03,900 --> 00:07:06,760 Yaxşı, 1 yekunları 1 faktöryel. 149 00:07:06,760 --> 00:07:10,090 Faktorial Belə ki zəng 2, 2 dəfə 1 qayıda bilər 150 00:07:10,090 --> 00:07:13,980 və faktöryel ki, geri vermək Ki, nəticə gözləyir 3. 151 00:07:13,980 --> 00:07:17,110 >> Və sonra hesablamaq olar onun nəticəsində 3 dəfə 2, 6 152 00:07:17,110 --> 00:07:18,907 və 4 faktöryel geri verir. 153 00:07:18,907 --> 00:07:20,740 Və yenə, biz var zəng yığını video 154 00:07:20,740 --> 00:07:23,810 bu bir az təsvir olunur İndi deyirəm daha çox. 155 00:07:23,810 --> 00:07:25,300 Lakin bu deyil. 156 00:07:25,300 --> 00:07:29,300 Bu tək həll edir bir sıra faktöryel hesablanması. 157 00:07:29,300 --> 00:07:31,527 >> Bu kod yalnız dörd xətləri var. 158 00:07:31,527 --> 00:07:32,610 Bu doğru, olduqca sərin var? 159 00:07:32,610 --> 00:07:35,480 Bu sexy növü var. 160 00:07:35,480 --> 00:07:38,580 >> Belə ki, ümumiyyətlə, lakin həmişə bir recursive funksiyası 161 00:07:38,580 --> 00:07:41,190 bir bir loop əvəz edə bilməz qeyri-recursive funksiyası. 162 00:07:41,190 --> 00:07:46,100 Belə ki, burada, yan-yana, iterativ var faktöryel funksiyası versiyası. 163 00:07:46,100 --> 00:07:49,650 Bu hesablamaq, həm də eyni şey. 164 00:07:49,650 --> 00:07:52,170 >> Onlar həm n faktöryel hesablamaq. 165 00:07:52,170 --> 00:07:54,990 sol version bunu recursion istifadə edir. 166 00:07:54,990 --> 00:07:58,320 sağ version bunu iteration istifadə edir. 167 00:07:58,320 --> 00:08:02,050 >> Və bildiriş, biz elan var tam məhsul dəyişən. 168 00:08:02,050 --> 00:08:02,940 Və sonra biz loop. 169 00:08:02,940 --> 00:08:06,790 Belə ki, uzun n kimi, daha çox 0 n ki, məhsul vurulması saxlamaq 170 00:08:06,790 --> 00:08:09,890 qədər n decrementing biz məhsul hesablamaq. 171 00:08:09,890 --> 00:08:14,600 Belə ki, bu iki funksiyaları, yenə, eyni şey. 172 00:08:14,600 --> 00:08:19,980 Amma onlar bunu etməyin tam eyni şəkildə. 173 00:08:19,980 --> 00:08:22,430 >> İndi, bu mümkündür daha çox bazası 174 00:08:22,430 --> 00:08:25,770 cinayət işinə və ya daha çox recursive halda, asılı olaraq 175 00:08:25,770 --> 00:08:27,670 nə sizin funksiyası etməyə çalışır. 176 00:08:27,670 --> 00:08:31,650 Siz mütləq yalnız məhdud deyil bir baza halda və ya bir recursive 177 00:08:31,650 --> 00:08:32,370 halda. 178 00:08:32,370 --> 00:08:35,320 Bir şey belə bir nümunə Çox bazası hallarda 179 00:08:35,320 --> 00:08:37,830 ola bilər şeylərdir Fibonacci sayı ardıcıllığı. 180 00:08:37,830 --> 00:08:41,549 >> Siz geri bilər ibtidai məktəb gün 181 00:08:41,549 --> 00:08:45,740 Fibonacci ardıcıllığı müəyyən edilir ki, Bu kimi ilk element 0. 182 00:08:45,740 --> 00:08:46,890 İkinci element 1. 183 00:08:46,890 --> 00:08:49,230 O həm də yalnız müəyyən olunur. 184 00:08:49,230 --> 00:08:55,920 >> Sonra hər element müəyyən edilir n minus 1 və n minus 2 cəmi kimi. 185 00:08:55,920 --> 00:09:00,330 Üçüncü element So 0 plus 1 1 olacaq. 186 00:09:00,330 --> 00:09:03,280 Və sonra dördüncü element İkinci element, 1 olacaq, 187 00:09:03,280 --> 00:09:06,550 plus üçüncü element, 1. 188 00:09:06,550 --> 00:09:08,507 Və 2 olardı. 189 00:09:08,507 --> 00:09:09,340 Və s və s. 190 00:09:09,340 --> 00:09:11,680 >> Belə ki, bu halda, biz iki baza hallarda var. 191 00:09:11,680 --> 00:09:14,850 N 1 bərabər deyil, 0 qayıtmaq. 192 00:09:14,850 --> 00:09:18,560 N 2 bərabər olduqda, 1 qayıtmaq. 193 00:09:18,560 --> 00:09:25,930 Əks halda, n Fibonacci qayıtmaq minus 1 plus n minus 2 Fibonacci. 194 00:09:25,930 --> 00:09:27,180 >> Belə ki, bir çox baza hallarda var. 195 00:09:27,180 --> 00:09:29,271 Nə çox recursive barədə? 196 00:09:29,271 --> 00:09:31,520 Yaxşı, bir şey var Collatz zənn çağırıb. 197 00:09:31,520 --> 00:09:34,630 Mən demək fikrində deyiləm Siz ki, nə 198 00:09:34,630 --> 00:09:38,170 Bu, həqiqətən, bizim son çünki bu video üçün problem. 199 00:09:38,170 --> 00:09:43,220 Və bu, bizim həyata var birlikdə işləmək üçün. 200 00:09:43,220 --> 00:09:46,760 >> Belə ki, burada nə Collatz zənn is-- 201 00:09:46,760 --> 00:09:48,820 hər müsbət tam tətbiq edilir. 202 00:09:48,820 --> 00:09:51,500 Və bu ki, speculates həmişə mümkün geri almaq üçün 203 00:09:51,500 --> 00:09:55,060 1 bu adımları əgər. 204 00:09:55,060 --> 00:09:57,560 N 1 deyil, dayandırmaq. 205 00:09:57,560 --> 00:10:00,070 N 1 əgər biz 1 geri var. 206 00:10:00,070 --> 00:10:05,670 >> Əks halda, bu keçir proses yenidən n 2 bölünür. 207 00:10:05,670 --> 00:10:08,200 Siz 1 geri ala bilərsiniz, əgər baxın. 208 00:10:08,200 --> 00:10:13,260 N tək Əks təqdirdə, keçmək daha 3n plus 1-də bu proses, 209 00:10:13,260 --> 00:10:15,552 və ya 3 dəfə n plus 1. 210 00:10:15,552 --> 00:10:17,010 Belə ki, burada biz bir baza halda var. 211 00:10:17,010 --> 00:10:18,430 N 1 bərabər deyil, dayandırmaq. 212 00:10:18,430 --> 00:10:20,230 Biz bir daha recursion məşğul deyilik. 213 00:10:20,230 --> 00:10:23,730 >> Amma biz iki recursive hallarda var. 214 00:10:23,730 --> 00:10:28,750 N hətta varsa, biz bir recursive etmək halda, n 2 bölünür zəng. 215 00:10:28,750 --> 00:10:33,950 N tək deyil, fərqli bir etmək 3 dəfə n plus 1-də recursive halda. 216 00:10:33,950 --> 00:10:39,120 >> Və bu video üçün məqsədi , ikinci almaq video fasilə, 217 00:10:39,120 --> 00:10:42,440 və cəhd və bu yazmaq recursive funksiyası Collatz 218 00:10:42,440 --> 00:10:47,640 harada, dəyəri n keçir və Bu necə bir çox addımlar hesablayır 219 00:10:47,640 --> 00:10:52,430 Siz n başlamaq əgər 1 almaq üçün və yuxarıda bu adımları edin. 220 00:10:52,430 --> 00:10:56,660 N 1 olarsa, bu, 0 addımlar atır. 221 00:10:56,660 --> 00:11:00,190 Əks halda, bu olacaq Lakin bir addım plus almaq 222 00:11:00,190 --> 00:11:06,200 bu da n qalır çox addımlar 2 bölünür n hətta, və ya 3N plus 1, əgər 223 00:11:06,200 --> 00:11:08,100 n tək deyil. 224 00:11:08,100 --> 00:11:11,190 >> İndi mən burada ekranda qoymaq etdik Sizin üçün test şeyi bir neçə, 225 00:11:11,190 --> 00:11:15,690 Sizin üçün testlər hallarda bir neçə görmək bu müxtəlif Collatz nömrələri nə, 226 00:11:15,690 --> 00:11:17,440 və həmçinin illüstrasiya addımlar ki, 227 00:11:17,440 --> 00:11:20,390 belə ki, siz keçmişdir lazımdır sort fəaliyyət bu prosesi görmək. 228 00:11:20,390 --> 00:11:24,222 N bərabərdir Belə ki 1, n Collatz 0. 229 00:11:24,222 --> 00:11:26,180 Siz nə yoxdur bir şey 1 geri almaq üçün. 230 00:11:26,180 --> 00:11:27,600 Əgər siz artıq orada istəyirik. 231 00:11:27,600 --> 00:11:30,550 >> N 2 olarsa, bu, davam edir bir addım 1 almaq üçün. 232 00:11:30,550 --> 00:11:31,810 Siz 2 ilə başlayın. 233 00:11:31,810 --> 00:11:33,100 Yaxşı, 2 1 bərabər deyil. 234 00:11:33,100 --> 00:11:36,580 Belə ki, bir addım olacaq plus lakin çox addımlar onu 235 00:11:36,580 --> 00:11:38,015 qalır n 2 bölünür. 236 00:11:38,015 --> 00:11:41,280 237 00:11:41,280 --> 00:11:42,910 >> 2 bölünür 2 1. 238 00:11:42,910 --> 00:11:47,200 Belə ki, lakin bir addım plus edir çox addımlar 1-edir. 239 00:11:47,200 --> 00:11:49,720 1 sıfır addımlar atır. 240 00:11:49,720 --> 00:11:52,370 >> Gördüyünüz kimi 3, var bir neçə addımlar iştirak edir. 241 00:11:52,370 --> 00:11:53,590 Siz 3 gedin. 242 00:11:53,590 --> 00:11:56,710 Və sonra getmək 10, 5, 16, 8, 4, 2, 1. 243 00:11:56,710 --> 00:11:58,804 Bu 1 geri almaq üçün yeddi addımlar atır. 244 00:11:58,804 --> 00:12:01,220 Gördüyünüz kimi, var bir Burada neçə digər test hallarda 245 00:12:01,220 --> 00:12:02,470 proqram test üçün. 246 00:12:02,470 --> 00:12:03,970 Belə ki, yenə, video fasilə. 247 00:12:03,970 --> 00:12:09,210 Mən indi geri jump getmək lazımdır faktiki prosesi burada nə, 248 00:12:09,210 --> 00:12:11,390 bu zənn nə. 249 00:12:11,390 --> 00:12:14,140 >> Siz anlamaq bilər baxın n Collatz müəyyən etmək üçün necə 250 00:12:14,140 --> 00:12:19,967 Bu necə bir çox hesablayır ki, Bu 1 almaq üçün addımlar. 251 00:12:19,967 --> 00:12:23,050 Beləliklə, ümid edirəm, Siz video durdurulmuş var və yalnız məni gözləyir deyil 252 00:12:23,050 --> 00:12:25,820 Burada sizə cavab vermək. 253 00:12:25,820 --> 00:12:29,120 Amma əgər, yaxşı, Burada cavab hər halda var. 254 00:12:29,120 --> 00:12:33,070 >> Belə ki, burada mümkün müəyyən var Collatz funksiyası. 255 00:12:33,070 --> 00:12:35,610 N, əgər baza case-- 1 bərabər, biz 0 qayıtmaq. 256 00:12:35,610 --> 00:12:38,250 Hər hansı bir daşımır addımlar 1 geri almaq üçün. 257 00:12:38,250 --> 00:12:42,710 >> Əks halda, biz iki recursive cases-- var hətta nömrələri üçün bir və tək üçün. 258 00:12:42,710 --> 00:12:47,164 Mən hətta nömrələri üçün test yolu n mod 2 0 bərabərdir yoxlamaq üçün edir. 259 00:12:47,164 --> 00:12:49,080 Bu, yenə əsasən sual, 260 00:12:49,080 --> 00:12:54,050 nə mod is-- geri əgər, əgər mən 2 bölmək n heç bir qalıq var? 261 00:12:54,050 --> 00:12:55,470 Yəni hətta sayı olardı. 262 00:12:55,470 --> 00:13:01,370 >> Və belə n mod 2 0 bərabərdir əgər test Bu daha sayı. 263 00:13:01,370 --> 00:13:04,250 Əgər belədirsə, mən 1 qayıtmaq istəyirəm, bu mütləq, çünki 264 00:13:04,250 --> 00:13:09,270 bir addım plus Collatz alaraq nə sayı mənə yarısı. 265 00:13:09,270 --> 00:13:13,910 Əks halda, mən 1 qayıtmaq istəyirəm plus Collatz 3 dəfə n plus 1. 266 00:13:13,910 --> 00:13:16,060 Digər oldu recursive addım ki, biz 267 00:13:16,060 --> 00:13:19,470 hesablamaq bilər Addımlar sayı Collatz-- 268 00:13:19,470 --> 00:13:22,610 geri almaq üçün 1 bir sıra verilir. 269 00:13:22,610 --> 00:13:24,610 Belə ki, ümid edirəm ki, bu nümunə bir az verdi 270 00:13:24,610 --> 00:13:26,620 recursive prosedurlar bir dad. 271 00:13:26,620 --> 00:13:30,220 Ümid edirəm ki, kodu hesab edirəm az daha əgər gözəl həyata 272 00:13:30,220 --> 00:13:32,760 zərif, recursive şəkildə. 273 00:13:32,760 --> 00:13:35,955 Hətta əgər Lakin, recursion bir Buna baxmayaraq, həqiqətən güclü bir vasitədir. 274 00:13:35,955 --> 00:13:38,330 Və belə ki, mütləq bir şey ətrafında baş almaq üçün, 275 00:13:38,330 --> 00:13:41,360 yaratmaq edə bilərsiniz, çünki recursion istifadə olduqca sərin proqramları 276 00:13:41,360 --> 00:13:45,930 ki, əks halda yazmaq üçün mürəkkəb ola bilər Siz loops və iteration kullanıyorsanız. 277 00:13:45,930 --> 00:13:46,980 Mən Doug Lloyd edirəm. 278 00:13:46,980 --> 00:13:48,780 Bu CS50 edir. 279 00:13:48,780 --> 00:13:50,228