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 والطريقة التي ن ويحسب مضروب 34 00:01:28,850 --> 00:01:31,050 وعليك ضرب كل من الأرقام أقل من 35 00:01:31,050 --> 00:01:33,750 أو يساوي together-- ن جميع الأعداد الصحيحة أقل من 36 00:01:33,750 --> 00:01:34,880 أو يساوي ن معا. 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 >> كما المبرمجين، ونحن لا استخدام ن، تعجب. 41 00:01:47,060 --> 00:01:51,840 ولذا فإننا سوف تحديد مضروب وظيفة كحقيقة ن. 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 كما انها مرات ن مضروب ن ناقص 1. 64 00:02:59,910 --> 00:03:04,840 انها ن مرات نتاج جميع الأرقام أقل من لي. 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 لدينا مجموعة من factorials، ونحن يمكن أن يستمر 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 حسنا، إذا كنا تتناولين مضروب ن، 120 00:05:35,780 --> 00:05:38,160 انها ن مرات مضروب ن ناقص 1. 121 00:05:38,160 --> 00:05:42,130 >> إذا نحن اتخاذ مضروب 3، انها 3 مرات مضروب 3 ناقص 1، 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 مرات العائد ن مضروب ن ناقص 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 خلاف ذلك العودة مرة ن مضروب ن ناقص 1. 136 00:06:28,351 --> 00:06:29,850 لذلك نحن جعل المشكلة أصغر. 137 00:06:29,850 --> 00:06:33,850 إذا كان n يبدأ على النحو 5، ونحن في طريقنا ل العودة 5 مرات مضروب 4. 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 >> كلاهما حساب مضروب ن. 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 طالما ن أكبر من 0، ونحن الحفاظ على ضرب هذا المنتج من قبل ن 170 00:08:06,790 --> 00:08:09,890 وdecrementing ن حتى نحسب المنتج. 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 >> ثم يتم تعريف كل عنصر آخر كمجموع ن ​​ناقص 1 و ن ناقص 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 بالإضافة إلى فيبوناتشي ن ناقص 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 حسنا، هناك شيء دعا التخمين Collatz. 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 لقد حصلت على العودة إلى 1 إذا كان n هو 1. 206 00:10:00,070 --> 00:10:05,670 >> خلاف ذلك، انتقل من خلال هذا العملية مرة أخرى على ن مقسوما على 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 مرات ن زائد 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 هو حتى، ونحن نفعل العودية واحد حالة، الاتصال ن مقسوما على 2. 215 00:10:28,750 --> 00:10:33,950 إذا كان n هو الغريب، ونحن نفعل مختلفة حالة متكررة على 3 مرات ن زائد 1. 216 00:10:33,950 --> 00:10:39,120 >> وبالتالي فإن الهدف لهذا الفيديو هو لتأخذ ثانية، وقفة الفيديو، 217 00:10:39,120 --> 00:10:42,440 ومحاولة لكتابة هذا وظيفة العودية Collatz 218 00:10:42,440 --> 00:10:47,640 حيث يمكنك تمرير في قيمة ن، و يحسب كم عدد الخطوات التي 219 00:10:47,640 --> 00:10:52,430 يلزم للحصول على 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 العديد من الخطوات التي تتخذها على أي ن مقسوما على 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 بضع حالات الاختبارات بالنسبة لك، لنرى ما هي هذه الأرقام Collatz المختلفة، 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، Collatz ن هو 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 يأخذ على تقسيم ن ب 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 >> نرى ما اذا كان يمكنك معرفة كيفية تعريف Collatz ن 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 >> حتى هنا تعريف ممكن وظيفة Collatz. 255 00:12:33,070 --> 00:12:35,610 قاعدتنا case-- إذا كان n هو يساوي 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 الطريقة يمكنني اختبار للأرقام الزوجية هو للتحقق مما إذا ن وزارة الدفاع 2 يساوي 0. 259 00:12:47,164 --> 00:12:49,080 وهذا هو الأساس، ومرة ​​أخرى، طرح السؤال، 260 00:12:49,080 --> 00:12:54,050 اذا كنت أذكر is-- ما إذا كنت زارة الدفاع الفجوة ن بنسبة 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 اتخاذ خطوة واحدة بالإضافة إلى Collatz من أيا كان عدد هو نصف مني. 265 00:13:09,270 --> 00:13:13,910 خلاف ذلك، أريد أن أعود 1 بالإضافة إلى Collatz من 3 مرات ن زائد 1. 266 00:13:13,910 --> 00:13:16,060 كان ذلك الآخر الخطوة العودية أننا 267 00:13:16,060 --> 00:13:19,470 قد يستغرق لحساب Collatz-- عدد من الخطوات 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 نأمل، كنت أعتقد code عبارة عن قليلا أكثر جمالا إذا ما نفذت 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