1 00:00:00,000 --> 00:00:05,860 >> [音樂播放] 2 00:00:05,860 --> 00:00:09,530 >> 道格·勞埃德:你可能認為, 代碼只是用來完成任務。 3 00:00:09,530 --> 00:00:10,450 你寫出來。 4 00:00:10,450 --> 00:00:11,664 它做一些事情。 5 00:00:11,664 --> 00:00:12,580 這幾乎是它。 6 00:00:12,580 --> 00:00:13,160 >> 你編譯它。 7 00:00:13,160 --> 00:00:13,993 運行該程序。 8 00:00:13,993 --> 00:00:15,370 你是好去。 9 00:00:15,370 --> 00:00:17,520 >> 但是,不管你信不信,如果 你的代碼很長一段時間, 10 00:00:17,520 --> 00:00:20,550 你居然不妨來看看 代碼東西是美麗的。 11 00:00:20,550 --> 00:00:23,275 它解決了在一個問題 一個非常有趣的方式, 12 00:00:23,275 --> 00:00:26,510 或有只是一些真正 整齊的有關它的樣子。 13 00:00:26,510 --> 00:00:28,750 你可能會笑 我,但這是事實。 14 00:00:28,750 --> 00:00:31,530 和遞歸是一種方式 排序得到這個想法 15 00:00:31,530 --> 00:00:34,090 美麗的,優雅的外觀的代碼。 16 00:00:34,090 --> 00:00:37,740 它解決的方式的問題, 很有意思,很容易想像, 17 00:00:37,740 --> 00:00:39,810 而令人驚訝的短。 18 00:00:39,810 --> 00:00:43,190 >> 該方法遞歸作品 是,遞歸函數 19 00:00:43,190 --> 00:00:49,291 被定義為一個函數調用 本身作為其執行的一部分。 20 00:00:49,291 --> 00:00:51,790 這似乎有些奇怪, 我們會看到一點點 21 00:00:51,790 --> 00:00:53,750 關於如何工作的時刻。 22 00:00:53,750 --> 00:00:55,560 但同樣,這些 遞歸程序 23 00:00:55,560 --> 00:00:57,730 會是如此優雅 因為他們會 24 00:00:57,730 --> 00:01:00,410 解決這個問題,而無需 擁有所有這些功能 25 00:01:00,410 --> 00:01:02,710 還是這些長循環。 26 00:01:02,710 --> 00:01:06,310 你會看到,這些遞歸 程序要看看這麼短。 27 00:01:06,310 --> 00:01:10,610 他們真的會做 你的代碼看起來很多更漂亮。 28 00:01:10,610 --> 00:01:12,560 >> 我給你舉個例子 這怎麼看 29 00:01:12,560 --> 00:01:14,880 遞歸過程可能被定義。 30 00:01:14,880 --> 00:01:18,202 所以,如果你熟悉這個 從數學課很多年前, 31 00:01:18,202 --> 00:01:20,910 有被稱為東西 階乘功能,這通常是 32 00:01:20,910 --> 00:01:25,340 表示為一個感嘆號,這 是指對所有的正整數。 33 00:01:25,340 --> 00:01:28,850 和的方式使n 階乘的計算方法 34 00:01:28,850 --> 00:01:31,050 是你乘的是 小於的數字 35 00:01:31,050 --> 00:01:33,750 或等於n together-- 所有的小於整數 36 00:01:33,750 --> 00:01:34,880 或等於n在一起。 37 00:01:34,880 --> 00:01:39,850 >> 因此,5階乘是5倍 4次3次2次1。 38 00:01:39,850 --> 00:01:43,020 和4因子的4倍 3次2次1等。 39 00:01:43,020 --> 00:01:44,800 你的想法。 40 00:01:44,800 --> 00:01:47,060 >> 作為程序員,我們不這樣做 用N,感嘆號。 41 00:01:47,060 --> 00:01:51,840 因此,我們將定義的階乘 功能實際上為n的。 42 00:01:51,840 --> 00:01:56,897 我們將用階乘創建 遞歸地解決的問題。 43 00:01:56,897 --> 00:01:59,230 我想你可能會發現 這是一個很多更直觀 44 00:01:59,230 --> 00:02:02,380 吸引力比迭代 版本的這一點,這 45 00:02:02,380 --> 00:02:05,010 我們還將看看在某一時刻。 46 00:02:05,010 --> 00:02:08,310 >> 因此,這裡有幾個 facts--雙關語intended-- 47 00:02:08,310 --> 00:02:10,169 關於factorial--的 階乘函數。 48 00:02:10,169 --> 00:02:13,090 1的階乘,正如我所說,是1。 49 00:02:13,090 --> 00:02:15,690 2的階乘是2倍1。 50 00:02:15,690 --> 00:02:18,470 3的階乘是3 次2次1,依此類推。 51 00:02:18,470 --> 00:02:20,810 我們談到了4,5了。 52 00:02:20,810 --> 00:02:23,940 >> 但看這,是不是這樣的嗎? 53 00:02:23,940 --> 00:02:28,220 是不是階乘的2只 2倍的1的階乘? 54 00:02:28,220 --> 00:02:31,130 我的意思是,1的階乘是1。 55 00:02:31,130 --> 00:02:34,940 那麼,為什麼我們不能只是說, 自2階乘是2倍1, 56 00:02:34,940 --> 00:02:38,520 它實際上只是2倍 1階乘? 57 00:02:38,520 --> 00:02:40,900 >> 然後擴展這一想法, 是不是3的階乘 58 00:02:40,900 --> 00:02:44,080 短短3倍2的階乘? 59 00:02:44,080 --> 00:02:50,350 和4的階乘的4倍 3,等等的階乘? 60 00:02:50,350 --> 00:02:52,530 事實上,階乘 任何數量可以只 61 00:02:52,530 --> 00:02:54,660 如果我們表達一種 攜帶這一點,直到永遠。 62 00:02:54,660 --> 00:02:56,870 那種我們可以概括 階乘問題 63 00:02:56,870 --> 00:02:59,910 因為它的n倍 階乘ñ減1。 64 00:02:59,910 --> 00:03:04,840 它的n倍的產物 所有的數字比我少。 65 00:03:04,840 --> 00:03:08,890 >> 這樣的想法,這 問題的概括, 66 00:03:08,890 --> 00:03:13,410 允許我們遞歸 定義階乘函數。 67 00:03:13,410 --> 00:03:15,440 當你定義一個函數 遞歸,有 68 00:03:15,440 --> 00:03:17,470 兩件事情,需要成為它的一部分。 69 00:03:17,470 --> 00:03:20,990 你需要有一種叫 基本情況,其中,當你觸發它, 70 00:03:20,990 --> 00:03:22,480 將停止遞歸過程。 71 00:03:22,480 --> 00:03:25,300 >> 否則,一個函數調用 itself--你可能imagine-- 72 00:03:25,300 --> 00:03:26,870 可以永遠持續下去。 73 00:03:26,870 --> 00:03:29,047 函數調用函數 調用函數調用 74 00:03:29,047 --> 00:03:30,380 該函數調用的函數。 75 00:03:30,380 --> 00:03:32,380 如果你沒有辦法 停止它,你的程序 76 00:03:32,380 --> 00:03:34,760 將得到有效卡住 在無限循環。 77 00:03:34,760 --> 00:03:37,176 它會崩潰,最終, 因為它會耗盡內存。 78 00:03:37,176 --> 00:03:38,990 但是,這是題外話。 79 00:03:38,990 --> 00:03:42,210 >> 我們必須要阻止一些其他的方式 除了我們的程序崩潰的事情, 80 00:03:42,210 --> 00:03:46,010 因為一個程序崩潰是 也許不漂亮或優雅。 81 00:03:46,010 --> 00:03:47,690 因此,我們稱之為基本情況。 82 00:03:47,690 --> 00:03:50,610 這是一個簡單的解決方案 到停止的問題 83 00:03:50,610 --> 00:03:52,770 遞歸過程的發生。 84 00:03:52,770 --> 00:03:55,220 所以這是的一部分 遞歸函數。 85 00:03:55,220 --> 00:03:56,820 >> 第二部分是遞歸情況下。 86 00:03:56,820 --> 00:03:59,195 而這正是遞歸 將實際發生。 87 00:03:59,195 --> 00:04:02,200 這是其中 功能調用自身。 88 00:04:02,200 --> 00:04:05,940 >> 它不會調用自身完全相同 以同樣的方式,它被稱為。 89 00:04:05,940 --> 00:04:08,880 這將是一個輕微的變化 這使得該問題是 90 00:04:08,880 --> 00:04:11,497 試圖解決一個很小的有點小。 91 00:04:11,497 --> 00:04:14,330 但一般通過降壓 的解決本體溶液的 92 00:04:14,330 --> 00:04:17,450 到不同的呼叫的路線。 93 00:04:17,450 --> 00:04:20,290 >> 這些長相 像基本情況嗎? 94 00:04:20,290 --> 00:04:25,384 這些看起來像一個 最簡單的解決問題的方法? 95 00:04:25,384 --> 00:04:27,550 我們有一大堆的階乘的, 我們可以繼續 96 00:04:27,550 --> 00:04:30,470 去on-- 6,7,8,9,10,等等。 97 00:04:30,470 --> 00:04:34,130 >> 但這些貌似之一 良好的情況下是基本情況。 98 00:04:34,130 --> 00:04:35,310 這是一個非常簡單的解決方案。 99 00:04:35,310 --> 00:04:37,810 我們並沒有做什麼特別的事情。 100 00:04:37,810 --> 00:04:40,560 >> 1的階乘是只有1。 101 00:04:40,560 --> 00:04:42,790 我們沒有做任何 乘法可言。 102 00:04:42,790 --> 00:04:45,248 好像如果我們要 嘗試和解決這個問題, 103 00:04:45,248 --> 00:04:47,600 我們需要停止 遞歸的地方, 104 00:04:47,600 --> 00:04:50,610 我們可能要停止 它,當我們得到1。 105 00:04:50,610 --> 00:04:54,580 我們不希望在這之前停止。 106 00:04:54,580 --> 00:04:56,660 >> 因此,如果我們定義 我們的階乘函數, 107 00:04:56,660 --> 00:04:58,690 這裡有一個骨架 我們如何做到這一點。 108 00:04:58,690 --> 00:05:03,110 我們需要在這兩個things--堵塞 基本情況和遞歸情況下。 109 00:05:03,110 --> 00:05:04,990 什麼是基本情況? 110 00:05:04,990 --> 00:05:10,150 如果n等於1,返回1--這是 要解決一個非常簡單的問題。 111 00:05:10,150 --> 00:05:11,890 >> 1的階乘是1。 112 00:05:11,890 --> 00:05:13,860 這不是1次東西。 113 00:05:13,860 --> 00:05:15,020 這只是1。 114 00:05:15,020 --> 00:05:17,170 這是一個非常簡單的事實。 115 00:05:17,170 --> 00:05:19,620 因此,可以是我們的基本情況。 116 00:05:19,620 --> 00:05:24,730 如果獲得通過1到這個 功能,我們就返回1。 117 00:05:24,730 --> 00:05:27,320 >> 什麼是遞歸 情況大概是什麼樣子? 118 00:05:27,320 --> 00:05:32,445 對於每一個其他數 除了1,什麼模式? 119 00:05:32,445 --> 00:05:35,780 那麼,如果我們正在做 n的階乘, 120 00:05:35,780 --> 00:05:38,160 的n是n次的階乘減1。 121 00:05:38,160 --> 00:05:42,130 >> 如果我們採取的3階乘, 它是3負1 3倍的階乘, 122 00:05:42,130 --> 00:05:43,070 或2。 123 00:05:43,070 --> 00:05:47,330 所以,如果我們不 看著1,否則 124 00:05:47,330 --> 00:05:51,710 返回n倍 階乘ñ減1。 125 00:05:51,710 --> 00:05:53,210 這是非常簡單的。 126 00:05:53,210 --> 00:05:57,360 >> 並且為了稍微具有 更清潔和更優雅的代碼, 127 00:05:57,360 --> 00:06:01,440 知道,如果我們有單行循環 或單行條件分支, 128 00:06:01,440 --> 00:06:04,490 我們可以擺脫所有的 他們周圍的花括號。 129 00:06:04,490 --> 00:06:06,850 因此,我們可以鞏固這種此。 130 00:06:06,850 --> 00:06:09,640 這具有完全相同的 功能這一點。 131 00:06:09,640 --> 00:06:13,850 >> 我只是收走了大 牙套,因為只有一行 132 00:06:13,850 --> 00:06:18,500 裡面的那些條件分支。 133 00:06:18,500 --> 00:06:21,160 因此,這些行為相同。 134 00:06:21,160 --> 00:06:23,800 如果n等於1,則返回1。 135 00:06:23,800 --> 00:06:28,351 否則返回n次 Ñ​​減去1的階乘。 136 00:06:28,351 --> 00:06:29,850 因此,我們正在做的問題較小。 137 00:06:29,850 --> 00:06:33,850 如果n開出5,我們要 返回的4 5倍的階乘。 138 00:06:33,850 --> 00:06:37,100 我們會在一分鐘內看到,當我們談論 關於另一個視頻通話stack-- 139 00:06:37,100 --> 00:06:39,390 我們談論了哪裡 致電stack--我們將學習 140 00:06:39,390 --> 00:06:41,630 關於到底為什麼這個過程的工作。 141 00:06:41,630 --> 00:06:46,970 >> 但5階乘時說: 返回階乘的5倍4,和4 142 00:06:46,970 --> 00:06:49,710 會說,好了,好了,回報 4倍3的階乘。 143 00:06:49,710 --> 00:06:51,737 正如你所看到的,我們是 那種接近1。 144 00:06:51,737 --> 00:06:53,820 我們越來越近 接近這一基本情況。 145 00:06:53,820 --> 00:06:58,180 >> 一旦我們打的基本情況, 以前的所有功能 146 00:06:58,180 --> 00:07:00,540 有他們在尋找答案。 147 00:07:00,540 --> 00:07:03,900 2階乘是說回歸 2倍的1的階乘。 148 00:07:03,900 --> 00:07:06,760 那麼,1返回1階乘。 149 00:07:06,760 --> 00:07:10,090 因此呼籲階乘 2可以返回2次1, 150 00:07:10,090 --> 00:07:13,980 並給出了回階乘 3,這是等待該結果。 151 00:07:13,980 --> 00:07:17,110 >> 然後它可以計算 其結果,3次2是6, 152 00:07:17,110 --> 00:07:18,907 並給它回到4的階乘。 153 00:07:18,907 --> 00:07:20,740 再次,我們有一個 視頻的調用堆棧 154 00:07:20,740 --> 00:07:23,810 其中這被示出一個小 不是我在說什麼,現在更多。 155 00:07:23,810 --> 00:07:25,300 但是,這是它。 156 00:07:25,300 --> 00:07:29,300 這僅僅是解決 計算一個數的階乘。 157 00:07:29,300 --> 00:07:31,527 >> 它只有四行代碼。 158 00:07:31,527 --> 00:07:32,610 這很酷,不是嗎? 159 00:07:32,610 --> 00:07:35,480 這是一種性感。 160 00:07:35,480 --> 00:07:38,580 >> 如此一般,但不 總是,遞歸函數 161 00:07:38,580 --> 00:07:41,190 可以替代在一個循環 非遞歸函數。 162 00:07:41,190 --> 00:07:46,100 所以在這裡,並排,是迭代 版本階乘功能。 163 00:07:46,100 --> 00:07:49,650 這兩種計算 同樣的事情。 164 00:07:49,650 --> 00:07:52,170 >> 他們都計算n的階乘。 165 00:07:52,170 --> 00:07:54,990 版本在左邊 使用遞歸來做到這一點。 166 00:07:54,990 --> 00:07:58,320 該版本在右側 使用迭代來做到這一點。 167 00:07:58,320 --> 00:08:02,050 >> 而通知,我們要聲明 一個變量的整數產品。 168 00:08:02,050 --> 00:08:02,940 然後我們循環。 169 00:08:02,940 --> 00:08:06,790 只要n是大於0,我們 保持該產品用n乘以 170 00:08:06,790 --> 00:08:09,890 和遞減ñ直到 我們計算該產品。 171 00:08:09,890 --> 00:08:14,600 所以這兩個函數,再次, 做同樣的事情。 172 00:08:14,600 --> 00:08:19,980 但他們不這樣做的 方式完全相同。 173 00:08:19,980 --> 00:08:22,430 >> 現在,有可能 有一個以上的基 174 00:08:22,430 --> 00:08:25,770 情況下或多於一個的 遞歸情況下,根據 175 00:08:25,770 --> 00:08:27,670 在你的函數試圖做的。 176 00:08:27,670 --> 00:08:31,650 您不必僅僅局限於 單個基案或單個遞歸 177 00:08:31,650 --> 00:08:32,370 案例。 178 00:08:32,370 --> 00:08:35,320 的東西這麼一個例子 有多個基例 179 00:08:35,320 --> 00:08:37,830 可能是this--的 斐波那契數列。 180 00:08:37,830 --> 00:08:41,549 >> 您可能還記得 小學生時代 181 00:08:41,549 --> 00:08:45,740 該斐波那契序列定義 像this--的第一個元素是0。 182 00:08:45,740 --> 00:08:46,890 第二個要素是1。 183 00:08:46,890 --> 00:08:49,230 這兩項都只是定義。 184 00:08:49,230 --> 00:08:55,920 >> 然後每隔一個元素被定義 當n減去1和n減去2的總和。 185 00:08:55,920 --> 00:09:00,330 因此第三元件 將0加1是1。 186 00:09:00,330 --> 00:09:03,280 然後將第四元件 將第二個元素,1, 187 00:09:03,280 --> 00:09:06,550 加所述第三元件,1。 188 00:09:06,550 --> 00:09:08,507 這將是2。 189 00:09:08,507 --> 00:09:09,340 等等等等。 190 00:09:09,340 --> 00:09:11,680 >> 所以在這種情況下,我們有兩個基例。 191 00:09:11,680 --> 00:09:14,850 如果n等於1,則返回0。 192 00:09:14,850 --> 00:09:18,560 如果n等於2,則返回1。 193 00:09:18,560 --> 00:09:25,930 否則,正的回報斐波那契 減1加N減2的斐波那契數。 194 00:09:25,930 --> 00:09:27,180 >> 所以這是多個基地的情況。 195 00:09:27,180 --> 00:09:29,271 那麼多個遞歸情況? 196 00:09:29,271 --> 00:09:31,520 那麼,有什麼東西 叫考拉茲猜想。 197 00:09:31,520 --> 00:09:34,630 我不會說, 你知道那是什麼, 198 00:09:34,630 --> 00:09:38,170 因為它實際上是我們最後的 問題對於該特定視頻。 199 00:09:38,170 --> 00:09:43,220 而這是我們的運動 一起工作的。 200 00:09:43,220 --> 00:09:46,760 >> 因此,這裡的什麼 在Collat​​z猜想is-- 201 00:09:46,760 --> 00:09:48,820 它適用於每一個正整數。 202 00:09:48,820 --> 00:09:51,500 它推測,它的 總是可能得到回 203 00:09:51,500 --> 00:09:55,060 1,如果你遵循這些步驟。 204 00:09:55,060 --> 00:09:57,560 如果n為1,停止。 205 00:09:57,560 --> 00:10:00,070 我們得回到1,如果n為1。 206 00:10:00,070 --> 00:10:05,670 >> 否則,通過這個 過程中再次n個除以2。 207 00:10:05,670 --> 00:10:08,200 看看你能回到1。 208 00:10:08,200 --> 00:10:13,260 否則,如果n是奇數,經過 這個過程再次3N加1, 209 00:10:13,260 --> 00:10:15,552 或3 n次加1。 210 00:10:15,552 --> 00:10:17,010 所以在這裡,我們有一個基本情況。 211 00:10:17,010 --> 00:10:18,430 如果n等於1,停止。 212 00:10:18,430 --> 00:10:20,230 我們沒有做任何更多的遞歸。 213 00:10:20,230 --> 00:10:23,730 >> 但是,我們有兩個遞歸的情況下。 214 00:10:23,730 --> 00:10:28,750 如果n為偶數,我們做一遞歸 情況下,調用n乘2分。 215 00:10:28,750 --> 00:10:33,950 如果n是奇數,我們做了不同的 遞歸的情況下,3 n次加1。 216 00:10:33,950 --> 00:10:39,120 >> 這樣一來,目標這個視頻 花一秒鐘,暫停視頻, 217 00:10:39,120 --> 00:10:42,440 並嘗試寫 遞歸函數在Collat​​z 218 00:10:42,440 --> 00:10:47,640 你傳遞一個值n,其中和 它計算多少步它 219 00:10:47,640 --> 00:10:52,430 才能到達1,如果你從n個開始 你遵循這些台階之上。 220 00:10:52,430 --> 00:10:56,660 如果n是1,它採取0的步驟。 221 00:10:56,660 --> 00:11:00,190 否則,它會 走一步加然而, 222 00:11:00,190 --> 00:11:06,200 它需要在任N多的步驟 除以2,如果n是偶數,或3n的加1 223 00:11:06,200 --> 00:11:08,100 如果n是奇數。 224 00:11:08,100 --> 00:11:11,190 >> 現在,我已經把在屏幕上點擊這裡 一對夫婦測試你的東西, 225 00:11:11,190 --> 00:11:15,690 你一對夫婦的測試用例,看 什麼這些不同在Collat​​z號碼, 226 00:11:15,690 --> 00:11:17,440 而且插圖 的步驟 227 00:11:17,440 --> 00:11:20,390 需要通過這樣你就可以走了 那種看到這個過程在行動。 228 00:11:20,390 --> 00:11:24,222 因此,如果n是等於 1,N的在Collat​​z為0。 229 00:11:24,222 --> 00:11:26,180 你不必做 什麼要回1。 230 00:11:26,180 --> 00:11:27,600 你已經在那裡了。 231 00:11:27,600 --> 00:11:30,550 >> 如果n是2,它需要 一個步驟去1。 232 00:11:30,550 --> 00:11:31,810 你開始2。 233 00:11:31,810 --> 00:11:33,100 井,2是不等於1。 234 00:11:33,100 --> 00:11:36,580 因此,這將是一步到位 加上然而,許多步驟是 235 00:11:36,580 --> 00:11:38,015 需要n個除以2。 236 00:11:38,015 --> 00:11:41,280 237 00:11:41,280 --> 00:11:42,910 >> 2除以2為1。 238 00:11:42,910 --> 00:11:47,200 因此,需要一步加然而, 許多步驟需要1。 239 00:11:47,200 --> 00:11:49,720 1採取零步驟。 240 00:11:49,720 --> 00:11:52,370 >> 3,你可以看到,有 相當多的步驟,參與。 241 00:11:52,370 --> 00:11:53,590 你從3。 242 00:11:53,590 --> 00:11:56,710 然後你去 10,5,16,8,4,2,1。 243 00:11:56,710 --> 00:11:58,804 這需要七個步驟要回1。 244 00:11:58,804 --> 00:12:01,220 正如你所看到的,有一個 其他幾個測試用例在這裡 245 00:12:01,220 --> 00:12:02,470 來測試你的程序。 246 00:12:02,470 --> 00:12:03,970 如此反复,暫停視頻。 247 00:12:03,970 --> 00:12:09,210 我會去跳回到我們 什麼樣的實際過程是在這裡, 248 00:12:09,210 --> 00:12:11,390 這是什麼猜想。 249 00:12:11,390 --> 00:12:14,140 >> 看看你能不能找出 如何界定的n在Collat​​z 250 00:12:14,140 --> 00:12:19,967 因此,它計算多少 步驟才能到達1。 251 00:12:19,967 --> 00:12:23,050 所以希望,你已經暫停視頻 你不只是在等我 252 00:12:23,050 --> 00:12:25,820 給你答案在這裡。 253 00:12:25,820 --> 00:12:29,120 但如果你是,那麼, 這裡的答案呢。 254 00:12:29,120 --> 00:12:33,070 >> 所以這裡有一個可能的定義 的在Collat​​z功能。 255 00:12:33,070 --> 00:12:35,610 如果n是我們的基礎case-- 等於1,我們返回0。 256 00:12:35,610 --> 00:12:38,250 它沒有採取任何 步驟要回1。 257 00:12:38,250 --> 00:12:42,710 >> 否則,我們有兩個遞歸cases-- 一個用於偶數,一個用於奇。 258 00:12:42,710 --> 00:12:47,164 我測試連號的方式 是檢查是否N模2等於0。 259 00:12:47,164 --> 00:12:49,080 這基本上是,再次, 問這個問題, 260 00:12:49,080 --> 00:12:54,050 如果你還記得什麼國防部is--如果我 除以n乘2有沒有餘數? 261 00:12:54,050 --> 00:12:55,470 這將是一個偶數。 262 00:12:55,470 --> 00:13:01,370 >> 所以,如果n模2等於0 測試是這樣一個偶數。 263 00:13:01,370 --> 00:13:04,250 如果是的話,我想回到1, 因為這絕對是 264 00:13:04,250 --> 00:13:09,270 走一步加在Collat​​z 不管數字是我的一半。 265 00:13:09,270 --> 00:13:13,910 否則,我想返回1 在Collat​​z加3 n次加1。 266 00:13:13,910 --> 00:13:16,060 這是其他 遞歸步驟我們 267 00:13:16,060 --> 00:13:19,470 可以採取的計算 Collat​​z--的步數 268 00:13:19,470 --> 00:13:22,610 它需要找回 到1給出一個數字。 269 00:13:22,610 --> 00:13:24,610 所以希望,這個例子 給你一點點 270 00:13:24,610 --> 00:13:26,620 的遞歸過程的味道。 271 00:13:26,620 --> 00:13:30,220 我們希望,你覺得代碼是 小實施更漂亮,如果 272 00:13:30,220 --> 00:13:32,760 在一個優雅的,遞歸的方式。 273 00:13:32,760 --> 00:13:35,955 但即使沒有,遞歸是一種 真正強大的工具,不過。 274 00:13:35,955 --> 00:13:38,330 所以這是絕對的東西 圍繞讓你的頭, 275 00:13:38,330 --> 00:13:41,360 因為你能夠創建 使用遞歸很酷方案 276 00:13:41,360 --> 00:13:45,930 否則可能是複雜的寫 如果您使用的是循環和迭代。 277 00:13:45,930 --> 00:13:46,980 我是道格·勞埃德。 278 00:13:46,980 --> 00:13:48,780 這是CS50。 279 00:13:48,780 --> 00:13:50,228