Я что-то упустил? При попытке реализовать алгоритм я не могу получить возвращаемое значение для функции. Первоначально, пытаясь вернуть массив, с которым я столкнулся, простые типы не будут работать.PHP Рекурсивная функция, не возвращающая значение
ПРИМЕЧАНИЕ. Это упрощенная версия, иллюстрирующая точку. Я знаю, что для иллюстрированного кода можно использовать нечто вроде print_r (array_map (function ($ x) {return $ x + 2;}, array (2, 4, 6, 8))); но это не будет сделано в полной проблеме.
И на вопрос. У меня есть следующий код:
function recursive1($myArray, $accumulator){
if(empty($myArray)){
return $accumulator;
} else {
recursive1(array_slice($myArray, 1), $accumulator+1);
}
}
$testArray = array(3, 5, 7, 9);
print("->".recursive1($testArray,10)."<-\n");
Getting ноль в результате
(output)
-><-
Добавление немного, чтобы увидеть внутренности у меня есть
function recursive1($myArray, $accumulator){
if(empty($myArray)){
print("[".$accumulator."]\n"); // End result
return $accumulator;
} else {
print("<".$accumulator.">"); // partial results
recursive1(array_slice($myArray, 1), $accumulator+1);
}
}
$testArray = array(3, 5, 7, 9);
print("->".recursive1($testArray,10)."<-\n");
я получаю, что функция это делает то, что это допустим, но возвращаемое значение будет потеряно.
(output)
<10><11><12><13>[14]
-><-
Так что я должен иметь
(output)
->14<-
Кстати, я использую
>php -version
PHP 5.5.30 (cli) (built: Oct 23 2015 17:21:45)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.5.0 Copyright (c) 1998-2015 Zend Technologies
Я также попытался присвоить значение переменной (вне функции) в нет.
Любые идеи? :-)
Вы должны 'return' значение в рекурсивной функции. 'return recursive1 (array_slice ($ myArray, 1), $ accumulator + 1);' –
Спасибо всем. Вернемся к делу. –