我是不是遗漏了什么?在尝试实现算法时,我无法获得函数的返回值。最初,试图返回一个我遇到过的简单类型的数组也不能很好地工作。
注意:这是一个简化的版本来说明这一点。我知道,对于所演示的代码,可以使用类似print_r(array_map($x($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我还尝试将该值赋给一个变量(在函数之外),但没有成功。
有什么想法吗?:-)
发布于 2016-03-02 08:28:50
您缺少一条return语句,因此您的函数在递归分支中不返回任何内容。更改此行:
recursive1(array_slice($myArray, 1), $accumulator+1);至
return recursive1(array_slice($myArray, 1), $accumulator+1); https://stackoverflow.com/questions/35736246
复制相似问题