2013-12-15 31 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)。 '
'; ? > 这是我现在..还是不工作.. –

相关问题