1 00:00:00,000 --> 00:00:03,110 >> COLUMNA 1: En que versión sigma, eu apliquei o que eu chamaría 2 00:00:03,110 --> 00:00:06,570 unha solución iterativa, no que eu usei un lazo para adiante para contar toda a 3 00:00:06,570 --> 00:00:09,720 os números entre 1 e m, posteriormente retornando a suma. 4 00:00:09,720 --> 00:00:12,560 >> Pero resulta que podemos utilizar outro técnica para aplicar ese mesmo 5 00:00:12,560 --> 00:00:15,120 función, unha técnica coñecido como recursão. 6 00:00:15,120 --> 00:00:19,360 Unha función recursiva, por así dicir, é simplemente o que chama a si mesmo. 7 00:00:19,360 --> 00:00:21,290 Agora, en si e por si, que pode ser un problema. 8 00:00:21,290 --> 00:00:24,500 Se unha función simplemente chama a si mesmo que chama a si mesmo, que chama a si mesmo, 9 00:00:24,500 --> 00:00:26,080 este proceso pode bot nunca acabar. 10 00:00:26,080 --> 00:00:30,490 Pero mentres nós temos unha chamada caso base, unha condición que garante 11 00:00:30,490 --> 00:00:34,930 que nalgunhas situacións non chamamos nós, este proceso de outra forma 12 00:00:34,930 --> 00:00:37,070 infinito looping debe cesar. 13 00:00:37,070 --> 00:00:39,180 >> Imos agora reimplementar sigma como segue. 14 00:00:39,180 --> 00:00:43,810 Se n é menor ou igual a 0, Son simplemente, e un tanto arbitrariamente, 15 00:00:43,810 --> 00:00:45,670 Vai voltar 0. 16 00:00:45,670 --> 00:00:49,370 Doutra maneira, que eu vou facer é en realidade calcular sigma ao int positivo 17 00:00:49,370 --> 00:00:50,460 que fose entregada. 18 00:00:50,460 --> 00:00:52,050 >> Agora, o que é sigma de m? 19 00:00:52,050 --> 00:00:55,480 Ben, sigma do m é, por suposto, a suma de 1 a través m. 20 00:00:55,480 --> 00:00:58,820 Pero se pensamos sobre iso doutro xeito, é simplemente a suma de m máis m 21 00:00:58,820 --> 00:01:02,560 menos 1 m, máis menos 2 e así por diante, todo o camiño ata a 1. 22 00:01:02,560 --> 00:01:08,080 Entón, nese sentido, parece que Podería simplemente devolver m plus. 23 00:01:08,080 --> 00:01:10,210 >> E entón eu teño m menos 1 m, máis menos 2. 24 00:01:10,210 --> 00:01:13,470 Pero eu teño unha función que pode dar me precisamente a resposta, ou sexa, 25 00:01:13,470 --> 00:01:16,340 sigma de m menos 1. 26 00:01:16,340 --> 00:01:19,670 >> Agora me chamar dese xeito non fai parece ser a mellor idea. 27 00:01:19,670 --> 00:01:22,610 Porque chámase sigma sigma que chama sigma que chama sigma, ten 28 00:01:22,610 --> 00:01:24,480 podería pensar que este proceso pode non rematar nunca. 29 00:01:24,480 --> 00:01:27,720 Pero é por iso que tivemos a chamada base de caso, na parte superior desta función. 30 00:01:27,720 --> 00:01:31,540 A condición if que comprobar se m é menor ou igual a 0 non vou 31 00:01:31,540 --> 00:01:32,610 de me chamar. 32 00:01:32,610 --> 00:01:37,010 Estou en vez de ir para volver 0, o que pola súa vez, será engadido ao 33 00:01:37,010 --> 00:01:39,950 números anteriores, que eu fun sumando Se, parando, así, este 34 00:01:39,950 --> 00:01:41,740 proceso doutro xeito infinito. 35 00:01:41,740 --> 00:01:43,710 >> Imos agora ver si esta nova implantación funciona. 36 00:01:43,710 --> 00:01:46,510 Imos gardar, compilar e executar este programa. 37 00:01:46,510 --> 00:01:50,640 Fai sigma 1 punto reducir sigma 1. 38 00:01:50,640 --> 00:01:52,900 E imos ofrece-lo co mesmos números de antes. 39 00:01:52,900 --> 00:01:55,520 2, que debe espero darme 3. 40 00:01:55,520 --> 00:01:58,970 Imos fornecer-lle 3, que deben espero darme 6. 41 00:01:58,970 --> 00:02:03,480 E imos, finalmente, proporcionar-lle 50, que en realidade dáme 1.275. 42 00:02:03,480 --> 00:02:06,130