Parcourir tous les étages d'un immeuble (difficile)
Voici un exercice pour travailler le concept des fonctions récursives. L'algo ci-dessous vous créé des tableaux dans des tableaux de manière récursive et aléatoire.
Pour illustrer l'exemple, imaginez que c'est une tour (un immeuble) qui à X étages (étage 0, étage 1, .... jusqu'au dernier étage). Vous ne savez pas combien il va y avoir d'étages à l'avance, car c'est déterminé de manière aléatoire. Des fois votre immeuble fera 2 étages, et des fois il en fera 6, vous ne savez pas à l'avance.
L'idée, c'est que vous arriviez à m'afficher le texte de chaque étage, en parcourant la variable que je vous donne à la fin du script : etageImmeuble.
Bon courage.
Copiez ce code dans un fichier "exo-recursion.js", et regardez la console voir ce qui s'y passe :
let randomNumber = (min = 1, max = 7) => {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
let nouvelEtage = (depth, etage) => {
let tab = [`Etage ${depth}`];
tab.push(etage);
if (depth > 0) {
depth--;
return nouvelEtage(depth, tab);
} else {
return tab;
}
}
let dernierEtage = ['Dernier étage, regardez cette vue !! On redescends.'];
let nombreEtages = randomNumber();
let etageImmeuble = nouvelEtage(nombreEtages, dernierEtage);
console.log(`Nombre d'étages : `, nombreEtages + 1);
console.log(etageImmeuble);
=> Sans toucher au code que je vous ai donné, faites moi une fonction qui permet d'afficher le texte de tous les tableaux de la variable etageImmeuble dans la console.
Une fois que ça marche, vous pouvez essayer d'agrandir les limites de randomNumber() afin de créer plus d'étages, et vérifier que votre script fonctionne toujours. Vous pouvez améliorer librement votre code par la suite (parcourir en sens inverse, afficher un message tous les X étages, etc...)
Voici le résultat attendu :
Une fois que vous y êtes arrivé, tester la fonction .flat() de JS.