Oppure

Loading
06/06/10 11:13
gforce
sono arrivato al mio libro alle funzioni ricorsive. Non riesco a capire perchè questo programma non funziona !

#include <stdio.h>

int roll (int y);

int main(void)
{
	int x = 2;
	printf ("%d", x);
	roll(x);
	return 0;
}

int roll (int y) {
	printf("%d",roll(y - 1));
	return 0;
}


L'output dovrebbe essere:
$./avvio 
2
1
ma esce fuori appena compilo:
Segmentation fault
aaa
06/06/10 11:48
carmine
prova a dichiararla procedura non funzione:
#include <stdio.h> 

void roll (int y); 

int main(void) 
{ 
    int x = 2; 
    printf ("%d", x); 
    roll(x); 
    return 0; 
} 

void roll (int y) { 
    printf("%d",roll(y - 1)); 
} 

aaa
06/06/10 11:59
gforce
si ma io voglio farlo con un return :asd:

edit:
compilando il tuo sorgente esce questo messaggio:

funzione.c: In function ‘roll’:
funzione.c:14: error: invalid use of void expression
Ultima modifica effettuata da gforce 06/06/10 12:01
aaa
06/06/10 12:00
Postato originariamente da carmine:

prova a dichiararla procedura non funzione:
#include <stdio.h> 

void roll (int y); 

int main(void) 
{ 
    int x = 2; 
    printf ("%d", x); 
    roll(x); 
    return 0; 
} 

void roll (int y) { 
    printf("%d",roll(y - 1)); 
} 



Carmine non dire queste ciaffate se non sai le cose
06/06/10 12:02
gforce
tu sai la soluzione d@vide ?
aaa
06/06/10 12:05
prova cosi..

#include  <stdio.h>

int main()
{
    int x = 2;
    printf("%d\n%d\n", x,roll(x));
    
    
    
}

int roll(int y) {
    int x = 0;
    x = y - 1;
    return x;
   
} 

fammi sapere :k:
06/06/10 12:11
gforce
Postato originariamente da carlduke:

prova cosi..

#include  <stdio.h>

int main()
{
    int x = 2;
    printf("%d\n%d\n", x,roll(x));
    
    
    
}

int roll(int y) {
    int x = 0;
    x = y - 1;
    return x;
   
} 

fammi sapere :k:

si funziona, ma io la voglio ricorsiva, e questa non è ricorsiva :nono:
aaa
06/06/10 12:42
xd....giusto...nnn avevo visto..Lol :rotfl::rotfl: