私はPHPでいくつかの再帰演習をやっていると私は、次の出力に困惑ビットだ:このPHPスニペットはなぜこのように動作しますか?
function calc($numTimes, $i, $total) {
if (!$i && !$total) {$i = 1; $total = 1;}
if ($i <= $numTimes) {
$total = $total*2;
$i++;
calc($numTimes, $i, $total);
}
echo $total.'+'.$i.'<br />';
}
calc(5);
それを実行する前に、私は出力が32 + 6であると考えただろう。しかし、これは私が得るものです:
32+6
32+6
16+5
8+4
4+3
2+2
私はそれを得ることはありません。出力は私が予想していたよりも5行だけ長くなるのではなく、合計を増やすのではなく、それを取り除くのですか?また、私は休憩を追加する場合。エコー後は、32 + 6というように返されます。しかし、return $ totalを使用するようにコードを変更すると、代わりに、エコーの:
function calc($numTimes, $i, $total) {
if (!$i && !$total) {$i = 1; $total = 1;}
if ($i <= $numTimes) {
$total = $total*2;
$i++;
calc($numTimes, $i, $total);
}
return $total.'+'.$i.'<br />';
}
$r = calc(5);
echo $r;
これは、プリントアウトする内容である:
2+2
私は少し混乱していると期待して誰かが私がここで何が起こっているのか理解するのに役立ちます。
'$ sum'とは何ですか?あなたは何をしようとしているのですか?あなたのコードが壊れている場合は、どうすればいいのですか? –