Struktūrinis programavimas
Pamoka 9 / 11 Rekursija — paragauti ~30 min
3 / 3 📖 Teorija

Namų darbas — paragavai, ir gana

Trumpas namų darbas — paragauti užtenka vieno kąsnio:

  1. Tame pačiame eksperimentų aplanke parašyk sumTo(n int) int, kuri grąžina 1 + 2 + ... + n rekursiškai. Užrašyk sau: koks bazinis atvejis? Kaip mažėja užduotis?
  2. Šalia parašyk sumToLoop — tą patį su for. Patikrink, kad sumTo(100) ir sumToLoop(100) abu grąžina 5050.
  3. Vienu sakiniu (komentare virš sumTo) atsakyk: kurį variantą paliktum tikroje programoje ir kodėl?

Pasirenkama (nebūtina — finaliniam projektui rekursijos NEREIKĖS): jei norisi paragauti ant savų duomenų, parašyk countUnread(items []Item, i int) int — skaičiuoja neperskaitytas knygas nuo indekso i: bazinis atvejis i >= len(items) grąžina 0. Palygink su range ciklu — ir ciklą pasilik.

Atsiskaitymui: sumTo + sumToLoop kodas, abiejų rezultatas su 100 ir tavo vieno sakinio verdiktas.

Patarimas. Paragavai — ir gana: rekursija grįš Algoritmų kurse, kur jai vieta. O dabar rimtesnis reikalas. Tavo programa jau moka viską... kol jos neuždarai — kiekvieną kartą paleidus iš naujo lentyna tuščia. Kitoje pamokoje duomenys pagaliau išgyvens restartą: išsaugosim į failą ir įkelsim paleidus. Tai paskutinė plyta prieš finalinį projektą.