Telefonino.net network
 
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. NEI PREFERITI .:: | RSS Forum | RSS News | NEWS web | NEWS software |
| PUBBLICITA' | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | CERCA nel FORUM » |

Torna indietro   WinTricks Forum > Software > Programmazione

Notices

Rispondi
 
Strumenti discussione
Vecchio 14-07-2004, 12.21.43   #1
NS-1
Hero Member
 
L'avatar di NS-1
 
Registrato: 09-05-2002
Loc.: COMO
Messaggi: 1.135
NS-1 promette bene
Ricorsione in C

potete dare un occhio a questo esempio?

Codice:
#include <stdio.h>

main(){
	char stringa[80];
	void inverti(char *);

	printf("\nInserisci una stringa:\n");
	fgets(stringa, 80, stdin);

	printf("\nInvertita:");
	inverti(stringa);

	printf("\n\n");

	return 0;
}

void inverti(char *frase){
	if(frase[0] == '\0')
		return;
	else{
		inverti(&frase[1]);
		putchar(frase[0]);
	}

}
non lo capisco proprio!!!
capisco la ricorsione ma non PERCHE' FUNZIONA!
___________________________________

...ad ogni alba sorgerà il tuo profumo
NS-1 non è collegato   Rispondi citando
Vecchio 14-07-2004, 12.38.07   #2
NS-1
Hero Member
 
L'avatar di NS-1
 
Registrato: 09-05-2002
Loc.: COMO
Messaggi: 1.135
NS-1 promette bene
pensandoci potrebbe essere così:

finché non trovo '\0' scorro tutto l'array con la ricorsione lasciando in sospeso le funzioni putchar() che arrivati alla fine verrando eseguite dall'ultima alla prima...


è tanto diverso da come l'ho capita io?
___________________________________

...ad ogni alba sorgerà il tuo profumo
NS-1 non è collegato   Rispondi citando
Vecchio 14-07-2004, 12.55.51   #3
Dav82
Gold Member
Top Poster
 
Registrato: 18-07-2002
Messaggi: 6.399
Dav82 promette bene
Quota:
Originariamente inviato da NS-1
pensandoci potrebbe essere così:

finché non trovo '\0' scorro tutto l'array con la ricorsione lasciando in sospeso le funzioni putchar() che arrivati alla fine verrando eseguite dall'ultima alla prima...


è tanto diverso da come l'ho capita io?
No no, perfetto (Y)

Frase = abcd\0

tieni in sospeso la putchar("a") e chiami inverti(bcd)
tieni in sospeso la putchar("b") e chiami inverti(cd)
tieni in sospeso la putchar("c") e chiami inverti(d)
tieni in sospeso la putchar("d") e chiami inverti(\0)
termini
fai le putchar al contrario
Dav82 non è collegato   Rispondi citando
Vecchio 14-07-2004, 12.57.00   #4
Dav82
Gold Member
Top Poster
 
Registrato: 18-07-2002
Messaggi: 6.399
Dav82 promette bene
Ah, tanto per dire: questo è un bell'esempietto scolastico... se stai imparando a programmare beh, sono cose necessarie da capire, ma in un programma un minimo serio non ti sognare mai di fare in questo modo per invertire una stringa E' un suicidio!
Dav82 non è collegato   Rispondi citando
Vecchio 14-07-2004, 13.03.57   #5
P8257 WebMaster
Gold Member
 
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
P8257 WebMaster promette bene
(Y) .. C'é la legge del taglione ...

come col GOTO...

Bye
P8257 WebMaster non è collegato   Rispondi citando
Vecchio 14-07-2004, 13.12.21   #6
NS-1
Hero Member
 
L'avatar di NS-1
 
Registrato: 09-05-2002
Loc.: COMO
Messaggi: 1.135
NS-1 promette bene
.. .. preferisco la programmazione strutturata alla ricorsiva .. senza contare che con programmi un pochinò più corposi i pc cominciano a sudare e paingere con la ricorsione...

quello era solo un esempio che ho trovato su un libro...
...come idea mi ha stupito, per il resto...



p.s. Dav, bella la sign
___________________________________

...ad ogni alba sorgerà il tuo profumo
NS-1 non è collegato   Rispondi citando
Vecchio 16-07-2004, 19.52.47   #7
NS-1
Hero Member
 
L'avatar di NS-1
 
Registrato: 09-05-2002
Loc.: COMO
Messaggi: 1.135
NS-1 promette bene
WEB, dopo le prime smanettate ho notato subito un certo odio alle funzioni come GOTO...
..quindi, da ipocrita, credendomi programmatore, non l'ho più utilizzata... forse una volta per fare in fretta...

ma qual'è il motivo vero?
oltre alla poca leggibilità del codice e alle difficili implementazioni successive che altri problemi può dare?

comunque: GOTO
___________________________________

...ad ogni alba sorgerà il tuo profumo
NS-1 non è collegato   Rispondi citando
Vecchio 17-07-2004, 15.13.27   #8
P8257 WebMaster
Gold Member
 
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
P8257 WebMaster promette bene
Quota:
NS-1 ha scritto:
...oltre alla poca leggibilità del codice e alle difficili implementazioni successive che altri problemi può dare?

comunque: GOTO
... E dici poco ... ...

Il GOTO non va usato (pena, taglio delle mani) nella programmazione perché genera errori di coerenza e di contiguità del flusso .. che diventa appunto discontinuo a causa dei salti che questa istruzione produce ...

Inoltre si avranno pezzi di codice sparsi per il programma e in più un singolo "goto" ne genera altri .. poiché si creeranno situazioni dalle quali tu ti devi "divincolare" da questi pezzi di codice il programma diventa un goto tira l'altro generando errori ricorsivi sempre più grandi, limitandone fortemente la leggibilità e impedendone quasi il debug in situazioni estreme....

Faccio un esempio in pseudocodice:
Codice:
:blocco A
- ... istruzioni blocco A
- se arrivo qui dal blocco B non devo rifarlo ma goto blocco C
- controllo il flag del blocco C per vedere se è già stato chiamato da me

:blocco B
- .. istruzioni blocco b
- Se succede qualcosa: goto blocco A

:blocco C
- istruzioni blocco C
- se sono arrivato dal blocco B allora goto blocco A
- se sono arrivato dal blocco A allora goto blocco D
e setto il flag per far capire al blocco A di non chiamarmi più...

:Blocco D
Riposa in pace....
Ti assicuro che nelle varie ricorsioni non ho esagerato .. ho visto di mooolto mooolto peggio ..

GOTO ... die!


Bye
P8257 WebMaster non è collegato   Rispondi citando
Vecchio 17-07-2004, 15.45.23   #9
NS-1
Hero Member
 
L'avatar di NS-1
 
Registrato: 09-05-2002
Loc.: COMO
Messaggi: 1.135
NS-1 promette bene
(Y)
___________________________________

...ad ogni alba sorgerà il tuo profumo
NS-1 non è collegato   Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is ON
Gli smilies sono ON
[IMG] è ON
Il codice HTML è OFF

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
[C++]esercizio ricorsione antony88 Programmazione 1 21-03-2008 11.56.10
[C] Ricorsività Downloader Programmazione 9 09-11-2007 17.17.46
[MySQL] Errore di sintassi Lorenzo3 Programmazione 6 21-09-2007 22.40.05
[C/C++] Listare contenuto directory Eteria Programmazione 13 21-07-2005 17.21.36
Funzioni ricorsive GiulioCesare Programmazione 2 08-09-2003 23.40.11

Orario GMT +2. Ora sono le: 22.56.09.


E' vietata la riproduzione, anche solo in parte, di contenuti e grafica.
Copyright © 1999-2017 Edizioni Master S.p.A. p.iva: 02105820787 • Tutti i diritti sono riservati
L'editore NON si assume nessuna responsabilità dei contenuti pubblicati sul forum in quanto redatti direttamente dagli utenti.
Questi ultimi sono responsabili dei contenuti da loro riportati nelle discussioni del forum
Powered by vBulletin - 2010 Copyright © Jelsoft Enterprises Limited.