1 00:00:00,000 --> 00:00:03,110 >> СПІКЕР 1: У цьому останній версії сигма, я реалізував те, що я назвав би 2 00:00:03,110 --> 00:00:06,570 ітераційне рішення, в результаті чого я використовував вперед петля підрахувати всі 3 00:00:06,570 --> 00:00:09,720 числа від 1 до м, після цього повертаючи суму. 4 00:00:09,720 --> 00:00:12,560 >> Але, виявляється, ми можемо використовувати інший Техніка для реалізації в тому ж 5 00:00:12,560 --> 00:00:15,120 Функція, метод, відомий як рекурсії. 6 00:00:15,120 --> 00:00:19,360 Рекурсивна функція, так сказати, просто той, який називає себе. 7 00:00:19,360 --> 00:00:21,290 Тепер, саме по собі, що можуть бути проблеми. 8 00:00:21,290 --> 00:00:24,500 Якщо функція просто називає себе, які називає себе яка називає себе, 9 00:00:24,500 --> 00:00:26,080 що процес може бот-небудь закінчиться. 10 00:00:26,080 --> 00:00:30,490 Але поки ми включають так званий базовий варіант, умова, яке забезпечує 11 00:00:30,490 --> 00:00:34,930 що в деяких ситуаціях ми не називаємо самі, що процес в іншому випадку 12 00:00:34,930 --> 00:00:37,070 нескінченне зациклення має бути припинено. 13 00:00:37,070 --> 00:00:39,180 >> Давайте тепер перевизначити сигма таким чином. 14 00:00:39,180 --> 00:00:43,810 Якщо п менше або дорівнює 0, я просто, і кілька довільно, 15 00:00:43,810 --> 00:00:45,670 збирається повертати 0. 16 00:00:45,670 --> 00:00:49,370 Інше, що я збираюся зробити, це насправді обчислити сигма для позитивного міжнар 17 00:00:49,370 --> 00:00:50,460 , Що я передав. 18 00:00:50,460 --> 00:00:52,050 >> Тепер, що сигма м? 19 00:00:52,050 --> 00:00:55,480 Ну, сигма т, звичайно, сума 1 через м. 20 00:00:55,480 --> 00:00:58,820 Але якщо ми думаємо про це по-іншому, це просто сума м плюс м 21 00:00:58,820 --> 00:01:02,560 мінус 1 плюс мінус 2 м і т. д., все, аж до 1. 22 00:01:02,560 --> 00:01:08,080 Так що в цьому сенсі, здається, що Я міг просто повернутися M Plus. 23 00:01:08,080 --> 00:01:10,210 >> А потім мені потрібно м мінус 1 плюс 2 м мінус. 24 00:01:10,210 --> 00:01:13,470 Але у мене є функція, яка може дати мені точно, що відповідь, а саме 25 00:01:13,470 --> 00:01:16,340 сигма т мінус 1. 26 00:01:16,340 --> 00:01:19,670 >> Тепер, називаючи себе в такий спосіб не походити на кращу ідею. 27 00:01:19,670 --> 00:01:22,610 Тому що, якщо сигма називає сигма який викликає сигма яка закликає сигма, ви 28 00:01:22,610 --> 00:01:24,480 було б думати, що цей процес ніколи не може закінчитися. 29 00:01:24,480 --> 00:01:27,720 Але саме тому у нас був так званий базу випадок у верхній частині цієї функції. 30 00:01:27,720 --> 00:01:31,540 Якщо умова, яку перевіряє, якщо т менше або дорівнює 0 Я не збираюся 31 00:01:31,540 --> 00:01:32,610 називати себе. 32 00:01:32,610 --> 00:01:37,010 Я замість збирається повертати 0, які в свою чергу, будуть додані до 33 00:01:37,010 --> 00:01:39,950 попередні цифри, які я підсумовування вгору, таким чином зупиняючи це 34 00:01:39,950 --> 00:01:41,740 в іншому випадку нескінченний процес. 35 00:01:41,740 --> 00:01:43,710 >> Давайте подивимося, якщо це нове реалізація працює. 36 00:01:43,710 --> 00:01:46,510 Врятуємо, компіляції та запустити цю програму. 37 00:01:46,510 --> 00:01:50,640 Зробити сигма 1 точка слеш сигма 1. 38 00:01:50,640 --> 00:01:52,900 І давайте надати йому ті ж номери, що й раніше. 39 00:01:52,900 --> 00:01:55,520 2, які, будемо сподіватися, дати мені 3. 40 00:01:55,520 --> 00:01:58,970 Давайте надати йому 3, що я сподіваюся дати мені 6. 41 00:01:58,970 --> 00:02:03,480 І давайте, нарешті, забезпечити його 50, яка дійсно дає мені 1275. 42 00:02:03,480 --> 00:02:06,130