Come faccio a spiegare "Ricorsione" a un bambino di 8 anni? [duplicare]

21

Qual è il modo migliore per spiegare " Ricorsione " a un bambino di 8 anni?

Ho provato con la serie di Fibonacci ma non ci sono riuscito.

    
posta Soner Gönül 18.07.2011 - 09:23
fonte

9 risposte

58

Bene, la ricorsione è in realtà abbastanza semplice da capire per i bambini. Non provarlo con la matematica o con ciò che le altre persone qui suggeriscono. Sono troppo giovani per capirlo. È troppo astratto e noioso per loro.

Invece: Mostra loro l'immagine di un pittore che dipinge un quadro del pittore che dipinge un quadro ...

Qualcosa del genere:

Probabilmentecisonoesempiancoramiglioridatrovaresulweb.Ecredimi:locapirannoinpocotempo.

Indipendentementedalladomanda,pensocheognibambinodovrebbepossedereunlibrocondipintidiM.C.Escher.Andràbeneperillorosviluppoecreatività.

Modifica

Ultimamentemisonoresocontochepuoispiegarelaricorsioneaibambiniancheusandoilcibo.Prendibroccoliocavolfiori,adesempio:

Questi sono ortaggi frattali. Strappateli e scoprirete che le parti più piccole si presenteranno come l'intero grande che avevate una volta, solo più piccole. Questo ha il vantaggio che puoi insegnare a tua figlia la ricorsione mentre mangi. Non ridere! I bambini lo ricorderanno meglio, perché sono legati al loro pasto (e quindi importanti per la loro coscienza) e possono comprenderlo. Un termine tedesco per "comprendere" è "begreifen", che letteralmente significa "toccare qualcosa per capirlo". Prova tu stesso. È molto più facile ricordare qualcosa che hai toccato una volta.

    
risposta data 18.07.2011 - 12:04
fonte
22

Leggi questa frase e fai ciò che dice due volte.

Ci scusiamo per eventuali BrainStackOverflowExceptions

    
risposta data 18.07.2011 - 12:34
fonte
4

Quando l'allenatore chiama Pokemon è chiamata "normale". Se Pokemon potesse chiamare se stesso da Pokeball sarebbe una chiamata ricorsiva (ha guardato Pokemon?).

Quando cantante, ad es. Eminem, inizia a chiamare nomi come - Dr. Dre, 50 cent (chiamate normali), Eminem (ricorsione).

Quando papà guida l'auto, è "normale chiamata". Quando Bob the Builder si guida da solo, è una ricorsione.

    
risposta data 18.07.2011 - 12:17
fonte
4

logo.

Altri frattali suggeriti, è una buona idea. Ma Logo ti permette di realizzare banalmente dei frattali perfetti.

Il fiocco di neve del Koch:

 to koch :level :len
   ifelse :level == 0 
     [ fd :len ] 
     [ koch level-1 len/3
       lt 60  
       koch level-1 len/3  
       rt 120
       koch level-1 len/3 
       lt 60
       koch level-1 len/3 ]
 end

 koch 5 100
 rt 120
 koch 5 100
 rt 120
 koch 5 100

Quindi usa varie "forme base". Koch's Snowflake è _/\_ definito da "avanti, sinistra 60, avanti, destra 120, avanti, sinistra 60, avanti. Altri da provare:

    _|_ 
      _
    _| |_

    /\

    __|

    __|_

    |\

... ricordando di girare sempre alla fine per affrontare la stessa direzione come all'inizio.

In seguito potresti suggerire di includere alcune piccole discrepanze, ad esempio usando 59 gradi anziché 60 ...

Generalmente, Logo è un linguaggio fantastico per insegnare la ricorsione.

    
risposta data 18.07.2011 - 12:27
fonte
2

Usa un mostro matematico come Julia o Mandebrot in forma frattale. Questo darà al bambino qualcosa di tangibile a cui aggrapparsi. Ogni volta che riduci il problema, sembra uguale, è solo più piccolo. Anche l'esempio infinito mirror funziona bene come esempio tangibile.

    
risposta data 18.07.2011 - 09:33
fonte
2

Vorrei iniziare con un esempio reale. Usa qualcosa di non correlato al codice, come le matrioske come un metafora per spiegare l'approccio di base dietro la ricorsione. (divide et impera) quindi usa un semplice esempio visivo affianco al codice per spiegare come questo si riferisce alla ricorsione nel codice. Il triangolo di Sierpinski menzionato da Mihai Maruseac è un buon inizio. Fibonacci è un buon seguito per qualcosa di astratto senza elementi visivi da abbinare. se non ottiene fibonacci, fallo capire alla matematica prima di spiegare il codice. Ha bisogno di capire l'algoritmo prima che possa capire il codice che lo realizzerà.

    
risposta data 18.07.2011 - 11:34
fonte
2

Dagli (lei?) qualcosa che può disegnare, come un Koch Snowflake o una delle sue varianti.

Per le formule, dagli qualcosa di concreto a cui possa relazionarsi, piuttosto che solo numeri. Come, il numero di lego in una scatola dopo aver applicato il prossimo passo nell'algoritmo (che consiglio di chiamare qualcosa di meno spaventoso, come una svolta o un passo).

Oh, ed evita di menzionare l'infinito. Preferisci: e ancora, e ancora e ancora ... Esegui il controllo in modo da avere l'impressione che stia giocando.

Il punto è, assicurati di essere estremamente concreto. I bambini di 8 anni possono essere intelligenti, ma il loro cervello non è realmente attrezzato a quell'età per cogliere questo livello di astrazione.

Un approccio in più che potrebbe funzionare è di elaborare, con lui, l'algoritmo che risolve una torre di Hanoi, un cubo di rubics o anche un semplice puzzle (fai un semplice puzzle con l'immagine rivolta verso il pavimento, e tu? Finiremo rapidamente a lavorare come un computer, provando le combinazioni una alla volta).

    
risposta data 18.07.2011 - 11:39
fonte
1

Come suggerito, usa i frattali. Il triangolo di Sierpinski è il migliore per questo caso.

Quindi, passa a factorial, lunghezza della lista, somma della lista, semplici formule matematiche in quest'area.

Successivamente, passa a algoritmi più complessi come Lee ma lascia che sia lui a inventarlo, fallo come un gioco.

    
risposta data 18.07.2011 - 09:47
fonte
1

epic fail.

Non usi l'esempio di Fibonacci per spiegare il significato della ricorsione, ma usalo per spiegare il potere dell'uso della ricorsione.

se vuoi spiegare a una ricorsione di 8 anni, usa la serie lineare 1,2,3,4,5, ..

e digli: diciamo che conosci l'elemento k e vuoi conoscere l'elemento successivo, puoi esprimere le cose in pochi modi, uno di questi è k1 = 1 k2 = k1 +1 k3 = k2 +1 k4 = k3 +1 k5 = k4 +1 k6 = k5 +1 l7 = l6 +1 k8 = k7 +1

allora dici, beh non voglio scriverli tutti, quindi voglio generalizzarlo, e un modo per farlo è dire K = k + 1 numero di destinazione il numero conosciamo il passaggio all'elemento successivo.

quindi fallo per la serie -1, -2, -3, -4, ...

quindi fallo per la serie 2,4,6,8, ..

quindi chiedi al ragazzo di inventare una serie.

ora lascia che ci pensi per un giorno, e dopo un giorno, mostra qualcosa di più significativo e utile, come l'uso del potere di calcolo, e dì che questa è una serie finita che si ferma all'elemento numero 1, e la calcoliamo indietro: 2 ^ 5 = 2 ^ 4 * 2 2 ^ 4 = 2 ^ 3 * 2 2 ^ 3 = 2 ^ 2 * 2 2 ^ 2 = 2 ^ 1 * 2 = 2 * 2 = 4 2 ^ 3 = 4 * 2 = 8 2 ^ 4 = 8 * 2 = 16 2 ^ 5 = 16 * 2 = 32

ora puoi provare di nuovo Fibonacci.

qualunque cosa tu provi, ci vorranno alcuni giorni, poiché la mente ha bisogno di adattarsi alla prossima sintassi della ricorsione che non è normale per nessun essere umano che non ne sappia.

    
risposta data 18.07.2011 - 12:52
fonte

Leggi altre domande sui tag