Iterasi Bersarang
Diperkenalkan| English | Makna |
|---|---|
| nested iteration/ˈnestɪd ˌɪtəˈreɪʃn/ | iterasi bersarang |
Perulangan di dalam perulangan
- Iterasi bersarang menempatkan satu perulangan di dalam badan perulangan lain.
- Perulangan dalam berjalan sepenuhnya untuk setiap kali perulangan luar.
- Luar berjalan
mkali, dalam berjalannkali setiap → badan dalam berjalanm × nkali. - Bersarang menangani grid, tabel, dan perbandingan sepasang-sepasang.
Baris dan kolom
- Penggunaan umum: perulangan luar untuk baris, perulangan dalam untuk kolom.
for (int r = 0; r < rows; r++) { for (int c = 0; c < cols; c++) { ... } }- Untuk setiap baris, perulangan dalam menyapu semua kolom sebelum luar maju.
- Ini mengunjungi setiap sel grid 2-D secara berurutan.
Melacak urutan
- Perulangan dalam menyelesaikan semua kali perulangnya, lalu luar mengambil satu langkah.
- Luar
r=0: dalamc=0,1,2; luarr=1: dalamc=0,1,2; dan seterusnya. - Reset penghitung dalam mana pun di awal setiap kali luar.
- Lacak perlahan — mencampur aduk perulangan mana yang maju adalah kesalahan umum.
Perhatikan variabel dalam
- Deklarasikan penghitung perulangan dalam di dalam atau reset setiap kali luar.
- Jika Anda menggunakan kembali variabel luar dalam kondisi dalam, waspadai gangguan.
- Penghitung dalam dan luar harus independen kecuali Anda berniat sebaliknya.
- Pola segitiga (
cdari0hinggar) membuat penghitung dalam bergantung pada luar.
Dalam perulangan bersarang, perulangan dalam berjalan LENGKAP untuk setiap kali luar. Jadi badan dalam dieksekusi outer × inner kali — nest 10 × 10 menjalankan badannya 100 kali, bukan 20. Reset penghitung dalam di setiap kali luar (mendeklarasikannya di header for dalam melakukan ini secara otomatis), atau kali luar kedua dimulai di mana yang pertama meninggalkan.
Mencetak grid bintang 3×3:
for (int r = 0; r < 3; r++) { for (int c = 0; c < 3; c++) { print("*"); } println(); }- Luar berjalan
3kali; dalam berjalan3setiap →9bintang total. - Setiap kali luar mencetak satu baris tiga bintang, lalu baris baru.
Iterasi bersarang menempatkan perulangan di dalam yang lain; perulangan dalam berjalan penuh untuk setiap kali luar, sehingga badan dalam dieksekusi outer × inner kali. Ini adalah pola untuk grid (luar = baris, dalam = kolom). Reset penghitung dalam setiap kali luar, dan lacak dengan teliti — dalam selesai sebelum luar maju.
Nested loops sweep a grid
Luar = baris, dalam = kolom; perulangan dalam mengisi setiap baris.
Perulangan luar berjalan 3 kali, dalam berjalan 3 kali setiap saat. Berapa kali tubuh perulangan dalam berjalan?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
3 × 3 = 9.
Dalam perulangan bersarang, perulangan dalam berjalan penuh untuk setiap kali perulangan luar.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Itulah sebabnya tubuh perulangan dalam berjalan luar × dalam kali.
Untuk grid 2-D, perulangan mana yang biasanya menangani kolom?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Outer = rows, inner = columns.
Perulangan bersarang 10 × 10 menjalankan tubuh dalamnya berapa kali?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
10 × 10 = 100.
Mendeklarasikan penghitung dalam di header for dalam meresetnya setiap kali luaran.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
int i baru di header dalam memulai ulang setiap kali.