Trasformare algoritmo iterativo in ricorsivo
traccia iterativo : letti 15 numeri sommi i positivi con i positivi e i negativi con i negativi
1)I=1:
2)introduci numero input n variabili : I=0 sp=0 sn=0
3)è n maggiore di 0? se si go to 8
4)sn=sn+n
5)I=I+1
6)I>15? se si go to 10
7)se no go to 2
8)sp=sp+n
9)go to 5
10)print
11)end
se qualcuno mi può aiutare a farlo diventare ricorsivo
1)I=1:
2)introduci numero input n variabili : I=0 sp=0 sn=0
3)è n maggiore di 0? se si go to 8
4)sn=sn+n
5)I=I+1
6)I>15? se si go to 10
7)se no go to 2
8)sp=sp+n
9)go to 5
10)print
11)end
se qualcuno mi può aiutare a farlo diventare ricorsivo
Risposte
sommaPos=0
sommaNeg=0
maxNumeri=15
leggi(sommaPos, sommaNeg, maxNumeri):
n=input("Inserisci numero")
maxNumeri=maxNumeri-1
if(n>0) sommaPos=sommaPos+n
else sommaNeg=sommaNeg+n
if(maxNumeri==0) end;
else leggi(sommaPos, sommaNeg, maxNumeri)
sommaNeg=0
maxNumeri=15
leggi(sommaPos, sommaNeg, maxNumeri):
n=input("Inserisci numero")
maxNumeri=maxNumeri-1
if(n>0) sommaPos=sommaPos+n
else sommaNeg=sommaNeg+n
if(maxNumeri==0) end;
else leggi(sommaPos, sommaNeg, maxNumeri)
Riprendendo l'algoritmo di xneo
Io la ricorsione la scriverei così
Io la ricorsione la scriverei così
leggi(sommaPos, sommaNeg, maxNumeri): if(maxNumeri == 0) end; n = input("Inserisci numero") if(n > 0): leggi(sommaPos+n, sommaNeg, maxNumeri-1) else: leggi(sommaPos, sommaNeg+n, maxNumeri-1)
Si, ho scritto di fretta, tra l'altro non volevo usare un linguaggio specifico.
grazie così ci capisco poco,se potete scriverlo più o meno nel modo che ho scritto io quello itertivo,grazie
Roberto, il problema è che loro usano (giustamente e come già ti avevo accennato) le funzioni (o routine o procedure o come cavolo le vuoi chiamare) mente tu usi i goto (che mi hai detto è il metodo che usate): così è un po' dura ...
Cordialmente, Alex
Cordialmente, Alex
1)l=15: 2sp=0 sn=0 3)introduci numero n 4) l=l-1 5)è n maggiore di 0? se si go to 7 6)sn=sn+n goto 9 7)sp=sp+n 8)se no go to 6) 9)se l==0 goto 11 10)se no chiama "RICORSIVAMENTE" la funzione a partire da 3) 11)print 12)end
Spero mi perdoniate per aver partorito questo mostro, più "ricorsivo di così" non si può fare
Sinceramente ammiro lo sforzo che hai fatto ma ti vorrei chiedere due cose:
- alla riga 10 intendi "se no goto 3" dato che lui usa solo i goto ...
- non ho capito alle righe 1 e 2 se $l$ è uguale a 15 o zero ...
Cordialmente, Alex
- alla riga 10 intendi "se no goto 3" dato che lui usa solo i goto ...
- non ho capito alle righe 1 e 2 se $l$ è uguale a 15 o zero ...
Cordialmente, Alex
l è uguale a 15, probabilmente ci saranno altri errori, come ce ne sono nel "codice" postato da roberto167 (se n>0 goto 8 e quindi non eseguirà mai la linea 5 che incrementa il contatore.
Alla riga 10 intendevo proprio quello che ho scritto.
La ricorsione in questo caso penso si possa solo ottenere in questo modo. Senza funzioni o metodi o routines non c'è modo di ottenere ricorsione...
Alla riga 10 intendevo proprio quello che ho scritto.
La ricorsione in questo caso penso si possa solo ottenere in questo modo. Senza funzioni o metodi o routines non c'è modo di ottenere ricorsione...
"xneo":quello che ho postato io si incrementa,ovvero una volta aver fatto la somma va al 5
l è uguale a 15, probabilmente ci saranno altri errori, come ce ne sono nel "codice" postato da roberto167 (se n>0 goto 8 e quindi non eseguirà mai la linea 5 che incrementa il contatore.
Alla riga 10 intendevo proprio quello che ho scritto.
La ricorsione in questo caso penso si possa solo ottenere in questo modo. Senza funzioni o metodi o routines non c'è modo di ottenere ricorsione...