1 00:00:00,000 --> 00:00:05,860 >> [음악 재생] 2 00:00:05,860 --> 00:00:09,530 >> DOUG 로이드 : 당신은 아마 생각 코드는 작업을 수행하는 데 사용된다. 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 배 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 배 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 번 리턴 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 때까지 N을 감소시키는 우리는 제품을 계산한다. 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 수 있습니다이 항아리 피보나치 수열. 180 00:08:37,830 --> 00:08:41,549 >> 당신은 기억 할 수 있습니다 초등학교 시절 181 00:08:41,549 --> 00:08:45,740 피보나치 시퀀스가​​ 정의되어 있는지 이 항아리처럼 첫 번째 요소는 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 >> 이 경우, 우리는 2 개의 기지국의 경우가있다. 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 그렇지 않으면, N의 피보나치를 반환 마이너스 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 음, 뭔가있다 Collat​​z 추측했다. 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 >> 그래서 여기에 무슨 콜라 츠 추측 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 n이 1 인 경우 우리는 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 당신이 N에서 시작하는 경우 (1)에 도착하는 데 걸리는 당신은 위의 해당 단계를 따르십시오. 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--을 불러주는 경우 나 (2)에 의한 분할 N 더 나머지가 없다? 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