рекурсия — статическая переменная в php не работает должным образом в рекурсивной функции

Я использую статическую переменную в php. В идеале это должно отображать от 1 до 10.

Но это не так. Почему это так ?

test(10);
function test($a)
{
static $count = 0;

$count++;
echo $count;
if ($count < $a) {
echo 'in if ' . $count;
test($count);
}

}

1

Решение

В вашем if неверная переменная. Если вы отладите его, вы увидите, что функция срабатывает только дважды вместо 10.

менять

if ($count < $a) {
echo 'in if ' . $count;
test($count);
}

в

if ($count < $a) {
echo 'in if ' . $count;
test($a);
}
4

Другие решения

Используйте это, если вы хотите напечатать от 1 до 10

function test($a)
{
static $count = 0;

$count++;
echo $count."====".$a;
if ($count < $a) {
echo 'in if ' . $count;
test($a);
}

}
0

По вопросам рекламы [email protected]