2013-08-01 63 views
-2

我想要使用二維數組得到帕斯卡的三角形。但它不起作用。 任何人都可以解決這個程序。 在此先感謝。在Pascal的三角形系列在php

<html> 
<body> 
<div> 
    <form name="form1" action="pascaltriangle4.php" method="post"> 
     Enter the number of rows in pyramid of stars you wish to see : <input type="text" name="n"> 
       <input type="submit" name="submit" value="submit"> 
    </form> 
    </div> 
    <div> 
    <table> 
<?php 
if($_POST['submit']==='submit') 
{ 
    ini_set('display_errors', 1); 
    error_reporting(E_ALL); 

    $n=$_POST['n']; 
    $arr=array(); 
    //print_r($arr); 
    for($i=0;$i<=$n;$i++) 
    { 
     echo "<tr>"; 
     for($j=0;$j<=$i;$j++) 
     { 
      if($j==0) 
      { 
       //echo "1"; 
       $arr[$i][$j]=1; 
       //print_r($arr); 
       if($n!=$i) 
       { 
        echo "<td colspan='".($n-$i)."'></td>"; 
       } 
        echo "<td>".$arr[$i][$j]."</td>"; 
        echo "<td></td>"; 
       } 
      elseif($i==$j) 
      { 
       //echo "1"; 
       $arr[$i][$j]=1; 
       //echo $arr; 
       echo "<td>".$arr[$i][$j]."</td>"; 
        //echo "<td></td>"; 
      } 
      else 
      { 
       $arr[$i][$j]=$arr[$i-1][$j-1]+$arr[$i-1][$j]; 
       echo "<td>".$arr[$i][$j]."</td>"; 
       echo "<td></td>"; 
      } 

     }echo "</tr>"; 
    } 
    //echo "<pre>"; 
    //print_r($arr); 
    //echo "</pre>"; 
} 
?> 
</table></div> 
<body> 
</body> 
</html> 
+0

提供一些代碼,你面臨的問題點? –

+0

非常簡單:初始化第0行,第2行嵌套循環,並添加前一行的兩個值;大約6行代碼......你有什麼問題? –

+1

我在程序的第43行錯誤了。即「$ arr = $ arr [$ i-1] [$ j-1] + $ arr [$ i-1] [$ j];」。我將它們分配給$ arr。正確的代碼是「$ arr [$ i] [$ j] = $ arr [$ i-1] [$ j-1] + $ arr [$ i-1] [$ j];」。所以這個程序工作正常。感謝您的指導。 –

回答

3
$size = 32; 
$pascal = array(
    array(1), 
); 

for ($i = 1; $i <= $size; ++$i) { 
    $prevCount = count($pascal[$i-1]); 
    for ($j = 0; $j <= $prevCount; ++$j) { 
     $pascal[$i][$j] = (
      (isset($pascal[$i-1][$j-1]) ? $pascal[$i-1][$j-1] : 0) + 
      (isset($pascal[$i-1][$j]) ? $pascal[$i-1][$j] : 0) 
     ); 
    } 
} 
var_dump($pascal);