|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Jul 2011
Messaggi: 4
|
[Python] Spiegazione funzione
Salve ragazzi,
anche se da un po' seguo il forum solo oggi ho trovato l'occasione per aprire il primo thread Per hobby ho deciso di studiare un linguaggio di programmazione anche per dilettarmi con qualche idea che ho in mente. La scelta è ricaduta su Python e dal sito ho scaricato dell'ottimo materiale per iniziare a capirci qualcosa. Sul capitolo delle funzione viene fatto questo esempio di moltiplicazione: Codice:
def mult(a,b):
if b == 0:
return 0
rest = mult(a,b - 1)
value = a + rest
return value
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2010
Città: Leuven
Messaggi: 667
|
è semplice :-)
La funzione è ricorsiva in pratica quando la chiami che fa: Supponiamo che siano a = 5 e b = 4 1) qui b vale 4 2)rest = mult(a,b-1) 2.1) qui b vale 3 2.2) rest = mult(a,b-1) 2.2.1) qui b vale 2 2.2.2) rest = mult(a,b-1) 2.2.2.1) qui b vale 1 2.2.2.2) rest = mult(a,b-1) 2.2.2.2.1) Qui b vale 0! 2.2.2.2.2) restituisce 0 2.2.2.3)rest = a+0 #rest = 5 2.2.3) rest = a+rest#rest = 10 2.3) rest = a+rest#rest = 15 3) rest = a+rest# rest = 20 ti è più chiaro così?
__________________
L'elettronica digitale non esiste, è solo elettrotecnica con interruttori piccoli!
|
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Jul 2011
Messaggi: 4
|
Ammetto che ho davvero difficoltà a pensare in ricorsivo sopratutto in questo caso. Quello che non capisco come rest incrementi il suo valore a ogni ricorsione per ottenere il 5 + 15 finale. Forse è un segnale del destino di mollare la programmazione e iniziare altro
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12900
|
Per capire bene la ricorsione dovresti conoscere il concetto di record di attivazione, a quel punto dovrebbe essere più semplice
Ultima modifica di WarDuck : 03-07-2011 alle 11:18. |
|
|
|
|
|
#5 |
|
Junior Member
Iscritto dal: Jul 2011
Messaggi: 4
|
ora leggo grazie per la dritta
edit: ho scaricato una lezione universitaria su ricorsione e record di attivazione e inizio a capire Ultima modifica di Frank Cimbali : 03-07-2011 alle 11:41. |
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Sep 2010
Messaggi: 102
|
in poche parole la cosa deriva dal concetto di moltiplicazione studiato alle elementari
cos'è una moltiplicazione? è sommare tot volte lo stesso numero. Perciò cosa faccio? prendo A che è il numero prendo MEMORIA che è la memoria delle operazioni che sto facendo prendo B che è il numero di volte che devo sommare A (secondo fattore). cosa faccio? Innanzitutto MEMORIA è = 0. comincio a sommare uno dopo l'altro: A + 0 (che è MEMORIA). Questo è il primo passo, perciò devo scalarmi un segnaposto da B, che diventa B-1 poi faccio di nuovo la stessa operazione: A + MEMORIA (che adesso viene 2A) e scalo di 1 da B. ecc ecc finchè B è uguale a zero vuol dire che ho già effettuato tutte le somme prescritte dal secondo fattore. In ricorsivo vuol dire che la funzione la chiamo una volta sola e visto che è sempre la stessa operazione che devo fare essa si richiama finchè B = 0. finito di richiamarsi fa le somme all'indietro. spero ti sia più chiaro |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:22.



















