function recursive et PB de return
Salut,
Cette fonction qui reçoit comme argument une chaîne, supprime toutes les sous chaîne de contenant plus de 1 'A' consécutif (à l'usage je supprimerai les espaces).
Malheureusement, la recursion fonction et s'arrête comme il faut :yaisse2:, mais le retour PAS ! :cry:
C'est surement trivial, mais je ne comprends pas et le nombre d'articles à ce sujet sur le net n'est pas énorme, pourtant la récursivité c'est bien pratique.
Voici mon code (je sais on "élève brouillon peut mieux faire:mouarf: )
Merci d'avance
Riete
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
<?php
//*******************************
// locate char A
//*******************************
function supress_Char($tab, $c, $pos){
if ($pos == strlen($tab)) return;
else{
// Si le caractere de la position en cours+1 est le caractere recherche
// le +1 c'est pour en garder 1 sinon avec $pos on les enleves tous
if (substr($tab, $pos+1, 1) == $c){
$tab = substr($tab, 0, $pos).substr($tab, $pos+1, strlen($tab)-$pos);
echo $pos." ".$tab."<br>";
supress_Char($tab, $c, $pos);
}
else{
++$pos;
supress_Char($tab, $c, $pos);
}
}
}
// Main program
$s = "azertyAAAAAAAAAAAAAAAAAAwxcvbnAAAfghjd";
print $s."<br>";
$s = supress_Char($s, 'A', 0);
print "<br>".$s;
?> |
[Résolu] PB Récursivité et retour
Je dépose ici mon code pour aider ceux qui comme moi peinent à comprendre la récursivité. Maintenant il tourne bien et cette fonction peut être utilisée pour de multiples usages. Je la trouve bien plus lisible que d'autre fonctions de type itératif.;)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
<?php
//----------------------------------------------------
// Le arguments de la fonction
// $tab => La chaîne a traiter
// $c => Le caractere a rechercher et a supprimer
// $pos => La position de depart dans la chaine
//----------------------------------------------------
function supress_Char($tab, $c, $pos){
if ($pos == strlen($tab)) return $tab;
else{
// Si le caractere de la position en cours+1 est le caractere recherche
// le +1 c'est pour en garder 1 sinon avec $pos en les enleves tous
if (substr($tab, $pos+1, 1) == $c){
$tab = substr($tab, 0, $pos).substr($tab, $pos+1, strlen($tab)-$pos);
echo $pos." ".$tab."<br>";
return supress_Char($tab, $c, $pos);
}
else{
++$pos;
return supress_Char($tab, $c, $pos);
}
}
}
// Main program
$s = "azertyAAAAAAAAAAAAAAAAAAwxcvbnAAAfghjd";
print $s."<br>";
$a = supress_Char($s, 'A', 0);
print "<br>".$a."!!!";
?> |