Forum >> Principianti >> [Risolto] Funzionalità funzioni ricorsive

Pagina: 1

Salve, a breve ho l'esame di programmazione in Python (non frequento la facoltà di matematica, quindi non è troppo profondo), ma non riesco a fornire le post condizioni di queste 4 funzioni ricorsive. Ho intuito che il parametro "a" rappresenta un albero e "a.v" il valore di un nodo e "a.dx" e "a.sx" i rami destro e sinistro.
Qualcuno potrebbe aiutarmi a ragionare su come esprimere in italiano comprensibile cosa fanno queste funzioni?


--- Ultima modifica di iulian in data 2019-01-12 21:44:56 ---
Allegati
"Funzionalità funzioni ricorsive" è già un titolo molto ricorsivo, quindi direi che sei a buon punto.


Sull'allegato binario di 480k senza estensione non posso esprimermi.









"Funzionalità funzioni ricorsive" è già un titolo molto ricorsivo, quindi direi che sei a buon punto.


Sull'allegato binario di 480k senza estensione non posso esprimermi.










Scusa l'errore, ho ricaricato, spero tu riesca ad aiutarmi.
Mah, intanto non allegare del codice sotto forma di immagine: prova a fare la fatica di copincollarlo e formattarlo in un post, come gesto di cortesia nei confronti di chi ti legge.


Detto questo, boh? Ma è uno scherzo? Che senso ha scrivere codice python così? Chiunque scriva codice del genere non ha neanche la più pallida idea di che cosa vuol dire programmare. Ma proprio non lo ha mai fatto nella vita, almeno in un contesto professionale.


Boh, non è che ho tanta voglia di risolvere i cruci-puzzle... a una prima occhiata è ovvio che si tratta di qualche operazione sugli alberi binari... ma non è che sia proprio il mio campo, e alcune di queste funzioni sono semplicemente scritte male e/o completamente sbagliate.


W(a) è l'unica che si capisce al volo ed è scritta in modo "giusto" anche se insensato: restituisce la somma di tutti i nodi che hanno esattamente due figli.

H(a, p) introduce una notazione "sx" e "dx" dove prima c'è scritto "l" e "r"... immagino che sia un errore dovuto a sciatteria... ma correggendo l'errore, dovrebbe restituire la larghezza di un dato livello (ovvero, quanti nodi ci sono a un dato livello). C'è un errore per il livello 0 (la radice), dove invece di restituire 1 restituisce "True", cosa che non ha senso. Ma tant'è.


S(a) restituisce True se... boh, non so come dirlo... se tutti i rami sono "bilanciati" nel senso che la loro somma è 0. Non so se esiste un termine tecnico per questo. "Pazzia", forse.

S(a, p) è quella che ha meno senso di tutte. Restituisce True solo se tutti i percorsi hanno somma pari a p, almeno mi pare a una prima occhiata. Ma non sono sicurissimo che sia così, dovrei fare delle prove. Forse voleva dire qualcos'altro ed è semplicemente bacata.





Detto questo, si tratta di funzioni scritte proprio male, ma davvero proprio male male male. Per esempio, tutte le volte che c'è scritto "if not a" o cose del genere lui vorrebbe dire "se non c'è questo nodo"... ma "if not a" vuole anche dire "se il valore di questo nodo è 0"... quindi, se fai degli esperimenti, fai solo attenzione a non usare mai lo zero come valore per un nodo, altrimenti salta tutto. Questo è uno che non sa come si programma in python.





Detto questo, se non hai la più pallida idea di come funziona la ricorsione, non è possibile che tu capisca queste funzioni. Devi prima lavorare su qualcosa di più facile (e soprattutto, qualcosa scritto meglio, da qualcuno che sa effettivamente scrivere codice python).




Mah, intanto non allegare del codice sotto forma di immagine: prova a fare la fatica di copincollarlo e formattarlo in un post, come gesto di cortesia nei confronti di chi ti legge.


Detto questo, boh? Ma è uno scherzo? Che senso ha scrivere codice python così? Chiunque scriva codice del genere non ha neanche la più pallida idea di che cosa vuol dire programmare. Ma proprio non lo ha mai fatto nella vita, almeno in un contesto professionale.


Boh, non è che ho tanta voglia di risolvere i cruci-puzzle... a una prima occhiata è ovvio che si tratta di qualche operazione sugli alberi binari... ma non è che sia proprio il mio campo, e alcune di queste funzioni sono semplicemente scritte male e/o completamente sbagliate.


W(a) è l'unica che si capisce al volo ed è scritta in modo "giusto" anche se insensato: restituisce la somma di tutti i nodi che hanno esattamente due figli.

H(a, p) introduce una notazione "sx" e "dx" dove prima c'è scritto "l" e "r"... immagino che sia un errore dovuto a sciatteria... ma correggendo l'errore, dovrebbe restituire la larghezza di un dato livello (ovvero, quanti nodi ci sono a un dato livello). C'è un errore per il livello 0 (la radice), dove invece di restituire 1 restituisce "True", cosa che non ha senso. Ma tant'è.


S(a) restituisce True se... boh, non so come dirlo... se tutti i rami sono "bilanciati" nel senso che la loro somma è 0. Non so se esiste un termine tecnico per questo. "Pazzia", forse.

S(a, p) è quella che ha meno senso di tutte. Restituisce True solo se tutti i percorsi hanno somma pari a p, almeno mi pare a una prima occhiata. Ma non sono sicurissimo che sia così, dovrei fare delle prove. Forse voleva dire qualcos'altro ed è semplicemente bacata.





Detto questo, si tratta di funzioni scritte proprio male, ma davvero proprio male male male. Per esempio, tutte le volte che c'è scritto "if not a" o cose del genere lui vorrebbe dire "se non c'è questo nodo"... ma "if not a" vuole anche dire "se il valore di questo nodo è 0"... quindi, se fai degli esperimenti, fai solo attenzione a non usare mai lo zero come valore per un nodo, altrimenti salta tutto. Questo è uno che non sa come si programma in python.





Detto questo, se non hai la più pallida idea di come funziona la ricorsione, non è possibile che tu capisca queste funzioni. Devi prima lavorare su qualcosa di più facile (e soprattutto, qualcosa scritto meglio, da qualcuno che sa effettivamente scrivere codice python).





Grazie dei suggerimenti, comunque con la ricorsione non ho particolari problemi, avevo anch'io il presentimento che gli esercizi (e si parla di esercizi da esame) non fossero scritti nella maniera più comprensibile. Grazie ancora!


Pagina: 1



Esegui il login per scrivere una risposta.