<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                >[success] ### 第五難 遞歸 尾遞歸 迭代 回調 ~~~php // 遞歸 function Add($num) { switch ($num) { case 1: return $num; default: return $num + Add($num - 1); } } //尾遞歸 function Add2($num, $result = 0) { switch ($num) { case 0: return $result; default: return Add2($num - 1, $result + $num); } } //迭代 function Add3($num) { $result = 0; while ($num != 0) { $result += $num; $num--; } return $result; } //回調 function AddFunc($num, $result = 0) { if ($num == 0) { return $result; } return function () use ($num, $result) { return AddFunc($num - 1, $result + $num); }; } function Add4($callback, $num) { $result = call_user_func_array($callback, $num); while (is_callable($result)) { $result = $result(); } return $result; } echo Add(5); echo Add2(5); echo Add3(5); //echo Add3(100000) echo Add4('AddFunc', [100000]); ~~~ >[success] ### 例子2 ~~~php $list = array( function ($message, $next) { $message .= '1111'; return $next($message); }, function ($message, $next) { $message .= '2222'; return $next($message); }, function ($message, $next) { $message .= '3333'; return $next($message); }, function ($message, $next) { $message .= '4444'; return $next($message); }, ); $output = function ($message) { echo $message; }; $message = "我要通過"; $msg = array_reduce(array_reverse($list), function ($carry, $item) { return function ($message) use ($carry, $item) { if ($item instanceof \Closure) { return $item($message, $carry); } }; }, function ($message) use ($output) { return $output($message); }); //A = function($message) use ($output($message), $list['3']); //B = function($message) use (A, $list['2']); //C = function($message) use (B, $list['1']); //D = function($message) use (C, $list['0']); // D // $message '我要通過' // $carry C // $item function ($message, $next) { $message .= '1111'; return $next($message);} // return $item($message, $carry) return C('我要通過1111') // C // $message '我要通過1111' // $carry B // $item function ($message, $next) { $message .= '2222'; return $next($message);} // return $item($message, $carry) return B('我要通過11112222') // B // $message '我要通過11112222' // $carry A // $item function ($message, $next) { $message .= '3333'; return $next($message);} // return $item($message, $carry) return A('我要通過111122223333') // A // $message '我要通過111122223333' // $carry $output($message) // $item function ($message, $next) { $message .= '4444'; return $next($message);} // return $item($message, $carry) return output('我要通過1111222233334444') $msg($message); ~~~ ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看