2013-12-15 4 views
0
<?php 


$l = 4000; 

function flip($h, $t) 
{ 

    if ($h + $t <= 29) { 
     $a = mt_rand(0, 1); 
     if ($a == 1) { 
      flip($h + 1, $t); 
     } else { 
      flip($h, $t + 1); 
     } 

    } else { 

     echo "$h,$t" . "</br>"; 
    } 

} 

$ar = array("test"); 


for ($i = 0; $i <= $l; $i++) { 
    array_push($ar, flip(0, 0)); 
} 


?> 

Мой код должен указывать количество хвостов и головок на спиннинги 30 раз. И этот процесс выполняется 4000 раз. Я хочу сохранить все результаты 4000 раз в массиве, используя вышеприведенный код. Но я думаю, что способ, который я определил флип, неверен. Я не знал, как сохранить значение аргументов flip после его завершения, поэтому я использовал эхо.Как выводить аргументы функции в самой функции

Когда я запускаю этот код .. по какой-то причине он распечатывает все ответы наподобие этого: http://searchr.us/testing/ip.php вместо того, чтобы просто создавать массив. У меня есть указатель, указывающий, что способ, которым я принимал значения vfilanl, неверно. Может ли кто-нибудь сказать мне разницу между echo, печать и как я могу использовать возврат. Когда я просто использую return(); после echo.It дает мне ошибку.

Просьба уточнить мое сомнение в том, как я могу вывести эти значения.

+0

Вы должны использовать ['return'] (http://www.php.net/return) вместо' echo'/'print'. – kero

ответ

0

Вы должны использовать что-то вроде этого:

<?php 

function flip($h, $t) 
{ 

    if ($h + $t > 29) return $h . ',' . $t; 
    $a = mt_rand(0, 1); 
    return $a == 1 ? flip($h + 1, $t) : flip($h, $t + 1); 

} 

$ar = array("test"); 

$l = 4000; 
for ($i = 0; $i <= $l; ++$i) { 
    array_push($ar, flip(0, 0)); 
} 

?> 

Обратите внимание, что echo выходы к клиенту.

Но вы хотите решить, что получите, когда звоните flip, и это делается с использованием return.

+0

Здравствуйте, я вижу, что ваш код более безрезультатен. Но теперь я заменил echo в моем коде с возвратом. игнорируя часть массива. Я попробовал получить ответ за флип, сделав это «print flip (0,0)», почему я не получил ответа? –

+0

@SaiKrishnaDeep Это работает для меня, если я использую 'echo flip (0,0), '
';' внутри цикла. С 'print flip (0,0). '
'; 'работает, но конкатенация строк происходит медленнее. – Oriol

+0

'; ? > Это мой теперь .. Еще не работает .. –

Смежные вопросы