dtkyayvldeaqhl7151 2014-01-27 10:47
浏览 130
已采纳

从函数调用递归函数仅返回第一个值

I have this recursive function that calls itself until the number reaches total. I have made this demo to show the working, actually the secondFunc() conatins database queries. I'm saving values in array that is passed to secondFunc() from firstFunc(). The problem is when i call first function it shows only 1 value i.e. 1. When i uncomment the var_dump in second func it shows all the values. I know i'm doing something wrong. Please point out my mistake .What is the problem here?

function firstFunc($total){    
    $array=array();
    $num=0;
    return secondFunc($total,$num,$array);
}



function secondFunc($total,$num,$array){
    $num++;
    $array[$num]=$num;
    if($num<$total){
    secondFunc($total,$num,$array);
    }
    //var_dump($array);
    //exit();
    return $array;

}

var_dump(firstFunc(5));

Demo http://codepad.viper-7.com/Bic8ce

  • 写回答

1条回答 默认 最新

  • drkwpgrdb092239314 2014-01-27 10:49
    关注

    When you call a function recursively you must make sure to propagate the recursive call's return value back to the original caller:

    if($num<$total) {
        return secondFunc($total,$num,$array); // return added
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 用matlab写代码
  • ¥30 motoradmin系统的多对多配置
  • ¥15 求组态王串口自定义通信配置方法或代码?
  • ¥15 实验 :UML2.0 结构建模
  • ¥20 用vivado写数字逻辑实验报告撰写,FPGA实验
  • ¥15 为什么shp文件会有这种小方块?
  • ¥15 ecplise在连接数据库时显示加载驱动成功但是数据库连接失败
  • ¥15 visionmaster启动失败,提示为“机器不满足授权而被禁用”
  • ¥15 IDEA中圈复杂度如何具体设置
  • ¥50 labview采集不了数据