1 00:00:00,000 --> 00:00:03,110 >> SPEAKER 1: In tal ultima versione di sigma, ho implementato quello che chiamerei 2 00:00:03,110 --> 00:00:06,570 una soluzione iterativa, per cui ho usato un ciclo avanti a contare tutte le 3 00:00:06,570 --> 00:00:09,720 numeri compresi tra 1 e m, successivamente restituzione della somma. 4 00:00:09,720 --> 00:00:12,560 >> Ma si scopre che possiamo usare un altro tecnica per attuare quella stessa 5 00:00:12,560 --> 00:00:15,120 funzione, una tecnica conosciuta come ricorsione. 6 00:00:15,120 --> 00:00:19,360 Una funzione ricorsiva, per così dire, è semplicemente uno che chiama se stessa. 7 00:00:19,360 --> 00:00:21,290 Ora, in sé e per sé, che potrebbe essere un problema. 8 00:00:21,290 --> 00:00:24,500 Se una funzione si chiama semplicemente che si chiede che si autodefinisce, 9 00:00:24,500 --> 00:00:26,080 tale processo potrebbe bot mai fine. 10 00:00:26,080 --> 00:00:30,490 Ma finché includiamo un cosiddetto caso base, una condizione che garantisce 11 00:00:30,490 --> 00:00:34,930 che in alcune situazioni non ci chiamiamo noi stessi, quel processo di altrimenti 12 00:00:34,930 --> 00:00:37,070 loop infinito deve cessare. 13 00:00:37,070 --> 00:00:39,180 >> Vediamo ora reimplementare sigma come segue. 14 00:00:39,180 --> 00:00:43,810 Se n è minore o uguale a 0, sono semplice, e un po 'arbitrariamente, 15 00:00:43,810 --> 00:00:45,670 andando a restituire 0. 16 00:00:45,670 --> 00:00:49,370 Altrimenti che cosa ho intenzione di fare è in realtà calcolare sigma per l'int positivo 17 00:00:49,370 --> 00:00:50,460 che ho consegnato. 18 00:00:50,460 --> 00:00:52,050 >> Ora, qual è sigma di m? 19 00:00:52,050 --> 00:00:55,480 Ebbene, sigma di m è, naturalmente, la somma di 1 attraverso m. 20 00:00:55,480 --> 00:00:58,820 Ma se ci pensiamo il contrario, è semplicemente la somma di m più m 21 00:00:58,820 --> 00:01:02,560 meno 1 m più meno 2 e così via, tutta la strada fino a 1. 22 00:01:02,560 --> 00:01:08,080 Quindi, in questo senso, sembra che Potrei semplicemente restituire m plus. 23 00:01:08,080 --> 00:01:10,210 >> E poi ho bisogno di m meno 1 più meno di 2 m. 24 00:01:10,210 --> 00:01:13,470 Ma ho una funzione che può dare Mi appunto quella risposta, vale a dire 25 00:01:13,470 --> 00:01:16,340 sigma di m meno 1. 26 00:01:16,340 --> 00:01:19,670 >> Ora, mi chiama in questo modo non sembrare l'idea migliore. 27 00:01:19,670 --> 00:01:22,610 Perché se sigma chiama sigma che chiama sigma che chiama sigma, è 28 00:01:22,610 --> 00:01:24,480 potrebbe pensare che questo processo Non potrebbe mai finire. 29 00:01:24,480 --> 00:01:27,720 Ma è per questo che abbiamo avuto la cosiddetta base di caso nella parte superiore di questa funzione. 30 00:01:27,720 --> 00:01:31,540 La condizione if che verifica se m è inferiore o uguale a 0 non mi va 31 00:01:31,540 --> 00:01:32,610 per chiamare me. 32 00:01:32,610 --> 00:01:37,010 Io invece intenzione di restituire 0, che a sua volta sta per essere aggiunto alla 33 00:01:37,010 --> 00:01:39,950 numeri precedenti che ho sommando up, arrestando così il 34 00:01:39,950 --> 00:01:41,740 processo altrimenti infinito. 35 00:01:41,740 --> 00:01:43,710 >> Vediamo ora se questa nuova implementazione funziona. 36 00:01:43,710 --> 00:01:46,510 Salviamo, compilare, e eseguire questo programma. 37 00:01:46,510 --> 00:01:50,640 Fai sigma 1 punto tagliano sigma 1. 38 00:01:50,640 --> 00:01:52,900 E cerchiamo di fornire con il stessi numeri prima. 39 00:01:52,900 --> 00:01:55,520 2, che dovrebbe auspicabilmente mi danno 3. 40 00:01:55,520 --> 00:01:58,970 Diciamo forniscono con 3, che spera, dovrebbe darmi 6. 41 00:01:58,970 --> 00:02:03,480 E diciamo finalmente fornire con 50, che anzi mi dà 1.275. 42 00:02:03,480 --> 00:02:06,130