Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mropo

funcao recursiva

Recommended Posts

Boas, meu povo!!

 

Seguinte Pessoal,

 

Eu estou com um trabalho da faculdade pra fazer, de arvore binaria usando recursividade, problema que eu nao sou muito bom em programação.

 

os arrays eu dei conta de fazer, agora só falta o mais dificil que é fazer a função pegar os dados dos nós folhas desta arvore.

 

desenvolver uma função recursiva em que receba como entrada todos os

elementos contidos em um array multidimensional e capture apenas os nós folhas,

retornando uma lista desses elementos.

 

 

<?php
$trabalho = array(
	"Filiais" => array(
		"BSB" => array(
			"Gerentes" => array	(
				"joana", "Marcelo"
			),
			"Supervisores" => array	(
				"Joao"
			),

		),
		"RJO" => array(
			"Gerentes" => array (
				"Ricardo"
			),
			"Analistas" => array(
				"Thiago"
			)	
		)

	)		 
);
print_r($trabalho);	
?>

Com o uso dos dados do array acima, o retorno obtido após a aplicação da função nos

dados deverá ser o array(“Joana”,

“Marcelo”,

“João”,

“Ricardo”,

“Thiago”).

 

É isso aí grandes mestres,

Parabéns aquele que der uma luz.

 

abraço a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beleza, mas isso não é um Desafio para o iMasters. O propósito da sala de Desafios é um tema ser desenvolvido por vários programadores onde vence aquele cujo script rodar em menos tempo.

 

E o próprio desafiante participa, postando sua versão do script.

 

Existem diversas formas de se fazer isso. O conceito de recursividade implica no uso de funções onde caso uma condição seja cumprida, a própria função é invocada de novo, e de novo, e de novo, até que não caia mais nessa condição e o restante do código seja operado.

 

A possibilidade mais simples ´:

 

function minhaFuncao( $argumento ) {

   // Testo se o argumento é um array

   if( is_array( $argumento ) ) {

       // Se for, itero sobre ele...

       foreach( $argumento as $a ) {

           // .. invocando a própria função, porém usando o valor corrente da iteração

           minhaFuncao( $a );
       }

   } else {

       // Se não for mais um array, faz alguma coisa com $argumento
   }
}

Tenta fazer você, afinal, se todo exercício serve para testar a capacidade individual de resolver problemas.

 

Se eu resolver pra você, você não aprende :P

 

Porém, esse seu caso em particular pode ser feito de outra forma sem uma estrutura de loop. Dá uma olhada nas Referências sobre Arrays e veja se descobre como (crédito extra).

Compartilhar este post


Link para o post
Compartilhar em outros sites

:seta: array_walk_recursive

:seta: Anonymous functions

Funções anonimas estão disponíveis desde PHP 5.3.0

 

Exemplo:

<?php

$result = null;

array_walk_recursive(

       $trabalho, 

       function( $value ) use ( &$result )
       { 
           $result[ ] = $value;
       } 
   );

var_dump( $result );

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.