PHP에서 오일러 문제를 해결하고 있습니다. 내가 주로 핥았 문제가PHP의 재귀 함수에 원래 인수를 저장하려면 어떻게해야합니까?
<?php
$biggest = 0;
$counter = 1;
function test($i){
global $biggest;
global $counter;
if ($i == 1) {
echo "I'm done! Took me $biggest steps";
}
else {
if ($i%2 == 0) {
$counter = $counter + 1;
if ($counter>$biggest) {
$biggest = $counter;
}
test($i/2);
}
else {
$counter = $counter + 1;
if ($counter>$biggest) {
$biggest = $counter;
}
test(3*$i+1);
}
}
}
test(13);
?>
,하지만 난 다시 원래의 입력에서 얻을 수없는 것 : 지금까지이 기능을 가지고있다. 질문은 "숫자가 있으면 홀수이면 3n + 1을 얻고, 짝수이면 n/2를 얻습니다. 1을 반환 할 때까지 않습니다. 시작하기 전에 어떤 시작 값이 가장 많은"걸음 "을 얻는가?" 나는 현재 단계 수를 반환하고 있지만 재귀하는 동안 $ i를 계속 재설정하므로 시작 단계에서 가장 많은 단계를 산출 할 수는 없습니다.
이 번호를 추적 할 수는 있지만 루프의 다음 인스턴스에서 어떻게 파괴되지는 않습니까? (나는 결국 이것을 $ i = 1, $ i < 1000000, $ i ++ 루프로 포장 할 것이다)
고마워!
함수의 통계는 전역 변수보다 우수하지 않습니다. – jason