Autor Tópico: [Resolvido] Função Recursiva  (Lida 3744 vezes)

Offline LeandroCGMS

  • Usuário Ubuntu
  • *
  • Mensagens: 110
    • Ver perfil
[Resolvido] Função Recursiva
« Online: 11 de Junho de 2018, 10:23 »
Agora:
Parece estar resolvido, segue o código:

function verificarRepetido($resultadoArray)
{
$primosAteOitenta = array(2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79);

        for ($i = 0, $j = count($resultadoArray) - 1; $i < count($resultadoArray); $i++, $j--) {
            for($j = 0; $j < count($resultadoArray); $j++) {
                if($i == $j){
                    continue;
                }
                if($resultadoArray[$i] == $resultadoArray[$j]){
                    $resultadoArray[$i] = rand(1,80);
                    verificarRepetido($resultadoArray);
                }
            }
        } // SÓ SAI DAQUI, QUANDO NÃO HAVER MAIS REPETIDOS

        /*echo "depois do primeiro FOR de REPETIDOS";
        print_r($resultadoArray);*/

        for ($i = 0; $i < count($resultadoArray); $i++) {
            for ($j = 0; $j < count($primosAteOitenta); $j++) {
                if ($resultadoArray[$i] == $primosAteOitenta[$j]) {
                    $resultadoArray[$i] = rand(1, 80);
                    verificarRepetido($resultadoArray);
                }
            }
        } // SÓ SAI DAQUI, QUANDO NÃO HAVER NÚMEROS PRIMOS

        sort($resultadoArray);


        for ($i = 0; $i < count($resultadoArray); $i++) { // FOR DA IMPRESSÃO DO ARRAY COM VÍRGULAS EM FORMATO CONJUNTO
            if ($i == count($resultadoArray) - 1) {
                echo "$resultadoArray[$i]";
                break;
            }
            echo "$resultadoArray[$i], ";
        }
    }


Anterioemente:
Bom dia.
O que tem de errado nessa função recursiva que não passa do primeiro FOR?

function verificarRepetido($resultadoArray)
        {
            $primosAteOitenta = array(2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79);

            for ($i = 0, $j=count($resultadoArray) - 1; $i < count($resultadoArray); $i++, $j--) {
                if($resultadoArray[$i] == $resultadoArray[$j]) {
                    $resultadoArray[$i] = rand(1,80);
                    verificarRepetido($resultadoArray);
                }
            } // SÓ SAI DAQUI, QUANDO NÃO HAVER MAIS REPETIDOS

            echo "depois do primeiro FOR de REPETIDOS";
            print_r($resultadoArray);

            for ($i = 0; $i < count($resultadoArray); $i++) {
                for($j = 0; $j < count($primosAteOitenta); $j++) {
                    if($resultadoArray[$i] == $primosAteOitenta[$j]){
                        $resultadoArray[$i] = rand(1,80);
                        verificarRepetido($resultadoArray);
                    }
                }
            } // SÓ SAI DAQUI, QUANDO NÃO HAVER NÚMEROS PRIMOS

            sort($resultadoArray);


            for($i = 0; $i < count($resultadoArray); $i++) { // FOR DA IMPRESSÃO DO ARRAY COM VÍRGULAS EM FORMATO CONJUNTO
                if($i == count($resultadoArray) - 1){
                    echo "$resultadoArray[$i]";
                }
                echo "$resultadoArray[$i], ";
            }
        }
« Última modificação: 11 de Junho de 2018, 10:54 por LeandroCGMS »