Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá Galera. O exemplo é simples, mas conseguindo parar esta recursividade, conseguirei solucionar um algoritmo que está sendo bastante complicado de achar a solução.
A saída deste programa tem que ser
ok
done 5
mas ele esta saindo
ok
done 5
done 5
done 4
done 3
done 2
done 1
done 0
#include <stdio.h>
int func(int x)
{
if (x == 10)
{ printf("ok\n"); }
else if (x < 10)
func(x+1);
if (x <= 5)
{ printf("done %d\n",x);
return;
}
}
int main()
{
int y = 0;
y = func(y);
}Dae darkchrono
Entao cara, assim eh um jeito de resolver que pro algoritmo maior nao resolve.
A idéia eh que nao importa o argumento do if... e sim, que se entrar no if ele deve parar a recursividade.... e é aí que eu estou me batendo. =S
mas com esse codigo que te passei, o resultado das saidas nao é o que você queria ?
você quer q pare a recursividade qndo entrar em qual if ???
bom eu pra falar a verdade 'odeio' recursividade pq acho meio complicado hehe!
+ do jeito q o darkchrono colocou ao mew ver esta certo!
você tem q ficar esperto na condição de parada pq qnd a recursividade começa a desempilhar ele faz chamada ao ultimo numero chamado, por isso esta dando done4, done3, done1;
volte a postar!
[]'s
Entao cara . Eh oq eu disse...
Para este exemplinho, mudar o argumento do if resolve, mas o que preciso é que se entrar no if, ele pare a recursividade.
neste if.
if (x <= 5)
{ printf("done %d\n",x);
return;
}cara acho q nem dá... sei la, mto esquisito isso que você quer....
int func(int x){
if (x == 10)
{ printf("ok\n"); }
else if (x < 10)
func(x+1);
if (x>=5){
if (x <= 5){
printf("done %d\n",x);
return 1;
}
}
}
eu colokei um if a mais, mais sei la, ta estranho isso hahacara acho q nem dá... ´
Dá sim. Ele só precisa chegar no fundo da recursao e retornar. O negocio não é crescente.
Ele tem que contar ate 10 e imprimir somente o ok qdo chegar no 10 e done 5 somente?
void func(int x)
{
if (x < 10)
func(x+1);
else if (x == 10) {
puts("ok");
return;
}
if (x == 5)
printf("done %d",x);
}
int main(){
func(0);
}
#include <stdio.h>
int func(int x)
{
int main()
{
assim, ta ok ???