О рекурсии и static переменной

_Echo_

Новичок
Доброго всем времени суток!

Есть код:

<?php

function incrementer($x)
{
static $x;

$x++;

if($x != 10){
incrementer($x);
}
else{
return $x;
}
}
echo incrementer(0);
?>

Ничего не выводится.
Если же в блоке If написать:
if($x != 10){
return incrementer($x);
}, т.е. добавить return,
то все работает.
Вопрос: что этот return возвращает?
Результат работы функции?
И что далее?
Заранее спасибо за ответ!
 

AnrDaemon

Продвинутый новичок
Вопрос: что этот return возвращает?
Результат работы функции?
Результат работы текущей итерации. Нарисуй блок-схему - станет понятнее.
Ничего. Я уже молчу про то, что у тебя совершенно непонятно по коду, какой именно $x используется. Статик или параметр.
 

WMix

герр M:)ller
Партнер клуба
PHP:
function incrementer($x)
{
  static $x;
  $x++;
  return $x;
}
echo incrementer(100500);
// 1
echo incrementer(42);
// 2
echo incrementer((int)(rand()*222));
// 3
 

AnrDaemon

Продвинутый новичок
Спасибо за демонстрацию, но я бы предпочёл, чтобы оно само до этого дошло.
 
Сверху