1 00:00:00,000 --> 00:00:03,110 >> SPEAKER 1: Dalam versi terakhir dari sigma, saya menerapkan apa yang saya sebut 2 00:00:03,110 --> 00:00:06,570 solusi iteratif, dimana saya menggunakan lingkaran ke depan untuk menghitung semua 3 00:00:06,570 --> 00:00:09,720 angka antara 1 dan m, kemudian kembali jumlah tersebut. 4 00:00:09,720 --> 00:00:12,560 >> Tapi ternyata kita bisa menggunakan lain teknik untuk mengimplementasikan sama 5 00:00:12,560 --> 00:00:15,120 fungsi, teknik dikenal sebagai rekursi. 6 00:00:15,120 --> 00:00:19,360 Sebuah fungsi rekursif, sehingga untuk berbicara, hanya satu yang menyebut dirinya. 7 00:00:19,360 --> 00:00:21,290 Sekarang, dalam dan dari dirinya sendiri, bahwa mungkin menjadi masalah. 8 00:00:21,290 --> 00:00:24,500 Jika fungsi hanya menyebut dirinya yang menyebut dirinya yang panggilan itu sendiri, 9 00:00:24,500 --> 00:00:26,080 proses yang mungkin bot pernah berakhir. 10 00:00:26,080 --> 00:00:30,490 Tapi selama kita termasuk yang disebut-a kasus dasar, suatu kondisi yang menjamin 11 00:00:30,490 --> 00:00:34,930 bahwa dalam beberapa situasi kita tidak menyebut diri kita sendiri, bahwa proses sebaliknya 12 00:00:34,930 --> 00:00:37,070 perulangan tak terbatas harus dihentikan. 13 00:00:37,070 --> 00:00:39,180 >> Mari kita sekarang reimplement sigma sebagai berikut. 14 00:00:39,180 --> 00:00:43,810 Jika n adalah kurang dari atau sama dengan 0, aku sederhana, dan agak sewenang-wenang, 15 00:00:43,810 --> 00:00:45,670 akan kembali 0. 16 00:00:45,670 --> 00:00:49,370 Lain apa yang akan saya lakukan adalah benar-benar menghitung sigma untuk int positif 17 00:00:49,370 --> 00:00:50,460 bahwa saya telah diserahkan. 18 00:00:50,460 --> 00:00:52,050 >> Sekarang, apa yang sigma dari m? 19 00:00:52,050 --> 00:00:55,480 Nah, sigma m, tentu saja, jumlah 1 melalui m. 20 00:00:55,480 --> 00:00:58,820 Tetapi jika kita berpikir tentang hal ini dengan cara lain, itu hanya jumlah m ditambah m 21 00:00:58,820 --> 00:01:02,560 dikurangi 1 m ditambah minus 2 dan sebagainya, semua jalan ke 1. 22 00:01:02,560 --> 00:01:08,080 Jadi dalam arti bahwa, tampaknya Aku hanya bisa kembali m plus. 23 00:01:08,080 --> 00:01:10,210 >> Dan kemudian saya perlu m dikurangi 1 plus minus 2 m. 24 00:01:10,210 --> 00:01:13,470 Tapi aku punya fungsi yang dapat memberikan saya justru jawaban itu, yaitu 25 00:01:13,470 --> 00:01:16,340 sigma dari m dikurangi 1. 26 00:01:16,340 --> 00:01:19,670 >> Sekarang, menyebut diri dengan cara ini tidak tampak seperti ide yang terbaik. 27 00:01:19,670 --> 00:01:22,610 Karena jika sigma sigma panggilan yang menyerukan sigma yang menyerukan sigma, Anda 28 00:01:22,610 --> 00:01:24,480 akan berpikir bahwa proses ini mungkin tidak pernah berakhir. 29 00:01:24,480 --> 00:01:27,720 Tapi itulah mengapa kami memiliki apa yang disebut dasar kasus di atas fungsi ini. 30 00:01:27,720 --> 00:01:31,540 The jika kondisi yang memeriksa jika m adalah kurang dari atau sama dengan 0 Aku tidak akan 31 00:01:31,540 --> 00:01:32,610 untuk menyebut diriku. 32 00:01:32,610 --> 00:01:37,010 Aku bukannya akan kembali 0, yang pada gilirannya akan ditambahkan ke 33 00:01:37,010 --> 00:01:39,950 angka sebelumnya bahwa saya telah menjumlahkan up, sehingga menghentikan ini 34 00:01:39,950 --> 00:01:41,740 Proses sebaliknya tak terbatas. 35 00:01:41,740 --> 00:01:43,710 >> Mari kita sekarang melihat apakah ini baru implementasi bekerja. 36 00:01:43,710 --> 00:01:46,510 Mari kita simpan, kompilasi, dan menjalankan program ini. 37 00:01:46,510 --> 00:01:50,640 Membuat sigma 1 dot slash sigma 1. 38 00:01:50,640 --> 00:01:52,900 Dan mari kita memberikan itu dengan nomor yang sama seperti sebelumnya. 39 00:01:52,900 --> 00:01:55,520 2, yang diharapkan akan memberi saya 3. 40 00:01:55,520 --> 00:01:58,970 Mari kita memberikan dengan 3, yang mudah-mudahan harus memberi saya 6. 41 00:01:58,970 --> 00:02:03,480 Dan mari kita akhirnya memberikan itu dengan 50, yang memang memberi saya 1.275. 42 00:02:03,480 --> 00:02:06,130