我错过了什么吗?在试图实现一个算法时,我无法获得函数的返回值。最初试图返回一个数组我遇到简单的类型不会工作。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");
获得无结果
(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);' –
谢谢大家。回到业务。 –