PHP bir Euler sorun üzerinde çalışıyor değilim. Ben şimdiye kadar bu işlevi vardır:
<?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);
?>
Ben çoğunlukla yaladı sorun var, ama ben orijinal girişinde geri almak için görünmüyor olabilir. Soru "Bir numara olduğunda, eğer tek yapmanız bile, n / 2 olsun 3n 1, elde edene kadar 1 döndürür. Başlangıç değerini en verimleri nedir" adımları "Eğer birine olsun önce?" Şu anda adımların sayısını iade ediyorum, ama ben özyineleme olarak $ i sıfırlayarak tutmak, bu yüzden başlangıç # adımların benim $ büyük numarasını verdi ne kaydedemezsiniz.
Nasıl bu sayının takip edebilirsiniz, ama aynı zamanda bu döngünün bir sonraki örneği de yok değil? (Sonunda $ i 1000000 <= 1 ($ i için bu şal, $ i + +) döngü olacak)
Teşekkürler!