Recursão com 3 condicionais for!

4 respostas
DavidUser

gente to com problema simples e complicado ao mesmo tempo, tenho que criar um modo de imprimir inúmeros valores reais desde que a < b então fiz um código em que se testa dessa forma:
a b c

[size=9]0 1 2
0 1 3
0 2 3
0 1 4
0 2 4
0 3 4[/size]...

Mas queria q quando c recebece 4 ele fizesse uma recursão onde a =1: [size=9]1 1 3 1 2 3 1 1 4 1 2 4 1 3 4[/size] ... e assim por diante ta assim o code mais ele faz uma contagem onde não ha a recursão:
public static void main(String[]args){
     int a = 0,b = 1,c = 2,sum=0,x=0;

     for(a=0;a<b;a++){
        for (c=2;b<c;c++){
             for(b=1;a<b & b<c;b++){
                 sum=a+b+c;
                 System.out.println("a="+a+" b="+b+" c="+c+"  sum="+(a+b+c));
             }
      }
    }
    }

4 Respostas

DavidUser
public static void main(String[]args){
     int a = 0,b = 1,c = 2,sum=0,x=0;

     for(a=0;a<b;a++){
        while (c<=4)
         for (c=2;b<c;c++){
             for(b=1;a<b & b<c;b++){
                 sum=a+b+c;
                 System.out.println("a="+a+" b="+b+" c="+c+"  sum="+(a+b+c));
             }
             if (c==4)a++;
      }
    }
    }
agora ta assim mais não sei pq não roda! run run run mais nada de resposta e se demora a máquina começa a travar o NetBeans.
pmlm

Tens para aí ciclos a mais.

Queres algo deste género?

public static void main(String[] args) {
    int x = 4;  //valor máximo de c
    int sum;
   
    for(int a=0;a<x-1;a++){  
        for(int b=a+1;b<x;b++){  
            for(int c=b+1;c<=x;c++){  
                sum=a+b+c;  
                System.out.println("a="+a+" b="+b+" c="+c+"  sum="+(a+b+c));  
            }
        }            
    }  
}
DavidUser

fala sério finalmente!
ai como tu deu conta,
esplica ai o raciocínio…

pmlm

Então é assim, se queres todas as combinações de três números, com os número menores que x e de tal forma que a < b < c, começas por percorrer todos os valores de a. O mínimo é 0 e o máximo? Se c no máximo vai ser igual a x, b vai ser igual a x-1 e c igual a x-2.
Percorrendo a de 0 até x-2 (menor que x-1), podemos passar a b, que terá de ser sempre maior que a (começa em a+1) e, pelo raciocínio anterior, terá como valor máximo x-1 (daí ser menor que x).
Falta o c, que vai ser obtido exactamente da mesma forma, sendo que terá de ser maior que b e menor ou igual que x.

Criado 20 de abril de 2009
Ultima resposta 22 de abr. de 2009
Respostas 4
Participantes 2