2013-12-15 50 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次的所有結果存儲在一個數組中。但我認爲我用翻蓋定義的方式是錯誤的。我不知道如何在完成翻轉後存儲翻轉參數的值,因此我使用了回聲。如何在函數本身輸出一個函數的參數

當我運行此代碼..出於某種原因它打印出所有這樣的答案:http://searchr.us/testing/ip.php而不是隻是一個數組。我有針腳指出,我採取錯誤的翻蓋vfilanl值的方式。有人可以告訴我區別之間回聲,打印和我如何使用回報。當我只使用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

你好,我看到你的代碼是無相同的。但是現在我用代碼替換了回顯。忽略數組部分。我嘗試通過做這個'印刷翻轉(0,0)'來獲得翻蓋的答案'我怎麼沒有得到任何答案? –

+0

@SaiKrishnaDeep如果我在循環中使用'echo flip(0,0),'
';',它適用於我。用'print flip(0,0)。 '
';'也可以工作,但連接字符串比較慢。 – Oriol

+0

<?php $ l = 4000; 功能翻蓋($小時,$噸) { 如果($ H + $ T <= 29){$ 一個= mt_rand(0,1); ($ a == 1)flip($ h + 1,$ t);如果($ a == 1){ } ($ h,$ t + 1);其他{ }其他{ ; } } else { return $ h。 ','。 $ T; } } echo flip(0,0)。 '
'; ? > 這是我現在..還是不工作.. –

相關問題