난 그냥 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'입니까? 너 뭐하려고? 코드가 손상된 경우 어떻게해야합니까? –