11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour les amis j'ai un test à faire pour un embauche et en me donne le code suivant :



<?php
class MenuElement
{
    public $id;
    public $children = array();

    public __construct($id)
    {
        $this->id = $id;
    }

    public function addChild(MenuElement $menuElement)
    {
        array_push($this->children, $menuElement);
    }
}

$menuElement1    = new MenuElement(1);
$menuElement11   = new MenuElement(11);
$menuElement12   = new MenuElement(12);
$menuElement121  = new MenuElement(121);
$menuElement122  = new MenuElement(122);
$menuElement123  = new MenuElement(123);
$menuElement1211 = new MenuElement(1211);

$menuElement121->addChild($menuElement1211);
$menuElement12->addChild($menuElement121);
$menuElement12->addChild($menuElement122);
$menuElement12->addChild($menuElement123);
$menuElement1->addChild($menuElement11);
$menuElement1->addChild($menuElement12);

Ecrire en PHP, Python ou JavaScript la fonction récursive qui affiche l'arborescence du menu :

<ul>
  <li>1
    <ul>
      <li>11</li>
      <li>12
        <ul>
          <li>121
            <ul>
              <li>1211</li>
            </ul>
          </li>
          <li>122</li>
          <li>123</li>
        </ul>
      </li>
    </ul>
  </li>
</ul>



Mais je ne sais pas comment faire
Si quelqu'un peut m'aider s'il vous plaît et merci d'avance
Modérateur
Salut,

Si on t'aide pour passer ton test d'embauche que tu n'arrive pas à passer, tu vas pas être dans la merde une fois embauché ? Smiley lol

Ou est-ce que tu bloques ?
Modifié par _laurent (24 May 2019 - 14:40)
Modérateur
Le php et le Js c'est pas fondamentalement différent... tu devrais y arriver vite

Le code php que tu as construit un objet avec des enfants etc. Pour mieux comprendre ce qu'il y a dedans tu peux l'afficher en faisant
var_dump($menuElement1);


Il faut ensuite que tu crées une fonction récursive dans la techno de ton choix pour afficher cet objet sous la forme attendue :
<ul>
  <li>1
    <ul>
      <li>11</li>
      <li>12
        <ul>
          <li>121
            <ul>
              <li>1211</li>
            </ul>
          </li>
          <li>122</li>
          <li>123</li>
        </ul>
      </li>
    </ul>
  </li>
</ul>
Administrateur
Bonjour,

sur le principe, Wikipedia en dit :
Wikipedia a écrit :
Du point de vue de la programmation, une fonction récursive est une fonction, au sens informatique de ce terme, qui s'appelle elle-même dans sa définition

et le tuto OC me semble plutôt abordable https://openclassrooms.com/fr/courses/438849-la-recursivite pour une manière de penser qui en général pique un peu quand on est habitué aux boucles Smiley ravi
Modérateur
Felipe a écrit :
pour une manière de penser qui en général pique un peu quand on est habitué aux boucles Smiley ravi

Mais non, pour comprendre la récursion il suffit de comprendre au préalable la récursion.