首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP递归函数不返回值

PHP递归函数不返回值
EN

Stack Overflow用户
提问于 2016-03-02 08:25:07
回答 3查看 705关注 0票数 1

我是不是遗漏了什么?在尝试实现算法时,我无法获得函数的返回值。最初,试图返回一个我遇到过的简单类型的数组也不能很好地工作。

注意:这是一个简化的版本来说明这一点。我知道,对于所演示的代码,可以使用类似print_r(array_map($x($x){return $x+2;},array(2,4,6,8)这样的函数;但这不能解决整个问题。

关于这个问题。我有以下代码:

代码语言:javascript
复制
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");

因此得到的结果是零

代码语言:javascript
复制
(output)
-><-

添加一些代码来查看我的内部结构

代码语言:javascript
复制
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");

我知道函数在做它应该做的事情,但是返回值丢失了。

代码语言:javascript
复制
(output)
<10><11><12><13>[14]
-><-

所以我应该

代码语言:javascript
复制
(output)
->14<-

顺便说一句,我正在使用

代码语言:javascript
复制
>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

我还尝试将该值赋给一个变量(在函数之外),但没有成功。

有什么想法吗?:-)

EN

Stack Overflow用户

发布于 2016-03-02 08:28:50

您缺少一条return语句,因此您的函数在递归分支中不返回任何内容。更改此行:

代码语言:javascript
复制
recursive1(array_slice($myArray, 1), $accumulator+1);

代码语言:javascript
复制
return recursive1(array_slice($myArray, 1), $accumulator+1);    
票数 2
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35736246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档