Recursieve rapporteurs schrijven

Je spreekt 9! uit als "negen faculteit", niet NEGEN!
De faculteit functie n! is het product van de getallen van 1 tot n, dus 1×2×3...×n.

  1. De waarde van 9! is 362,880. Vind zelf de waarde van 10!.
  2. Vergeet niet Bo's advies: basisgevallen zijn belangrijk!
  3. Beschrijf het verband tussen 37! en 36!.
  4. Gebruik deze ideeën om een faculteitblok te maken met een recursieve rapporteur.
Recursieve commando's kunnen meerdere recursieve blokken aanroepen (boom is een goed voorbeeld; ieder boomblok roept twee keer boom aan.

Recursieve commando's hebben vaak zo'n structuur, met meerdere commando's in de recursieve aanroep: Geen Afbeelding

Je kan dit script niet eens bouwen omdat je geen blok onder een rapporteerblok mag zetten.

Recursieve rapporteurs hebben verschillende structuren omdat ze maar één waarde kunnen rapporteren. Omdat het rapporteerblok een antwoord rapporteert, moet je het antwoord vooraf maken of in de aanroep van het rapporteerblok bouwen. Dus wat hieronder staat, is niet mogelijk:
Geen Afbeelding

Programma's die tekst verwerken, tellen het aantal woorden en letters in documenten. Je kan het aantal letters in een groep woorden tellen met een recursieve rapporteur.

  1. De groep woorden "die zich in Nederland bevinden" heeft 26 letters. Hoeveel letters bevat "Allen die zich in Nederland bevinden"?
  2. Recursie heeft altijd een basisgeval nodig om het script te stoppen. Wat voor soort basisgeval kunnen we in deze situatie gebruiken?
  3. Maak een lettertellerblok dat een lijst van woorden als invoer heeft en het totaal aantal letters in alle woorden rapporteert. Het alles, behalve de eerste vanblok kan handig zijn, maar er zijn meerdere manieren om het te doen.
    Geen Afbeelding
  4. Maak je eigen versie van het voeg samenblok. Dit blok heeft als invoer een lijst en als uitvoer een zin met spaties:
    Geen Afbeelding

De lijstfuncties alles, behalve de eerste van en voor worden vaak gebruikt in recursieve rapporteurs.

  1. Bouw dit meervoudblok, beschrijf daarna hoe het werkt. (Je hebt al een makkelijkere versie van meervoud gebouwd met behulp van map; we willen dat je snapt dat je hetzelfde probleem op meerdere manieren kan oplossen.)
    Geen Afbeelding
Terug Volgende