12345654321
 123454321
  1234321
   12321
    121
     1用PHP

解决方案 »

  1.   

    function foo($n) {
      for($i=1; $i<$n; $i++) echo $i;
      for(; $i>0; $i--) echo $i;
      echo '<br>';
      if($n>1) foo($n-1);
    }
    echo '<div align=center>';
    foo(6);
    echo '</div>';
      

  2.   

    <?php
        function foo($n) {
            for($i=1; $i<$n; $i++) echo $i;
            for(; $i>0; $i--) echo $i;
            echo '<br>';
            if($n>1) foo($n-1);
        }
        echo '<div align=right>';
        foo(6);
        echo '</div>';
    ?>2楼的代码是可行的..
      

  3.   


    function foo($max) {
    echo '<pre>';
    for ($i=$max; $i>0; $i--) {
    $str = $j = $i;
    while ($j > 1) {
    $str = ($j-1) . $str . ($j-1);
    $j--;
    }
    $str = str_repeat(' ', (6 - $i)*2) . $str;
    echo $str, "\r\n";
    }
    echo '</pre>';
    }
    foo(6);
      

  4.   

    楼上很正确.递归调用
    function foo($n) {
      for($i=1; $i<$n; $i++) echo $i;
      for(; $i>0; $i--) echo $i;
      echo '<br>';
      ($n>1)?foo($n-1):""; //如何大于1 的时候递归调用
    }
    echo '<div align=center>';
    foo(6);
    echo '</div>';
    /***
    *再提供一种不用递归的方法。
    */
    function foo2($n) {
    for($t = 0;$t<$n;$t++)
    {
      for($i=1; $i<$n-$t; $i++) echo $i;
      for(; $i>0; $i--) echo $i;
      echo "<br/>";
    }
    }
    echo '<div align=center>';
    foo2(6);
    echo '</div>';
      

  5.   

    楼主,2#回答的很正确啊。稍微改改会吧?
    <?php
    $n=6;
    function foo($n) {
      for($i=1; $i<$n; $i++) echo $i;
      for(; $i>0; $i--) echo $i;
      echo '<br>';
      if($n>1) foo($n-1);
    }
    echo '<div align=center>';
    foo(6);
    echo '</div>';
    ?>
      

  6.   

    sorry 我是说二楼正确,一晃中间插入了这么多帖。
      

  7.   

    让人想起当年学C的时候做的习题。
    $n   = 6;
    $pad = '';
    echo "<div style='text-align:center'>";
    while($n)
    {
    for( $i=1,$j=2*$n;$i<$j;$i++)
    {
    $k = $j - $i;
    $k = $k > $n ? $j - $k : $k;
    echo $k;
    }
    echo "<br/>";
    $pad .= "&nbsp;&nbsp;";
    echo $pad;
    $n--;
    }
    echo "</div>";
      

  8.   

    在浏览器里测试例子,不用div居中还真难办,各种分辨率
      

  9.   

    怎么说呢,浏览器分辨率是客户端的东西,要做的话需要引入javascript,把分辨率发送给服务器端php
    css绝对居中的div况且都要写一坨css,就不要为难php了...呵呵
      

  10.   


    <?php /***
    *再提供一种不用递归的方法。
    */
    function foo2($n) {
        for($t = 0;$t<$n;$t++)
        {
          for($j = 0;$j<$t;$j++) echo "*";  
          
          for($i=1; $i<$n-$t; $i++) echo $i;
          for(; $i>0; $i--) echo $i;
          
           for($j = 0;$j<$t;$j++) echo "*";  
          echo "<br/>";
        }
    }
    echo '<div>';
    foo2(6);
    echo '</div >';?>
    是不是这样的效果???  把* 替换成&nbsp 即可
    12345654321
    *123454321*
    **1234321**
    ***12321***
    ****121****
    *****1*****
      

  11.   

    不用div 就用center 标签。这个居中效果挺好。
      

  12.   

    <?php
    define('NUM' , 100);foreach(range(1 , NUM , 1) as $n){
    $pad_len += strlen($n);
    }$pad_len = $pad_len * 2 - 1;foreach(range(NUM , 1 , -1) as $n){
    echo "<LI>" , str_replace('-' , '&nbsp;' , str_pad(join(array_merge(range(1 , $n , 1) , $n == 1 ? array() : range($n-1  , 1  , -1))) , $pad_len , '-' ,  STR_PAD_BOTH));
    }
    ?>
      

  13.   

    我研究了一下,发这个代码给大家帮我提导一下。<?php
    /*递归*/
    function foo($L){
       $H = intval($L/1);//获取变量的整数值 
         for($i=$L;$i>=1;$i-=1,$H++){//递归,$i接受$L传值 $i大于1时,$i自减1.$H是前面的空格
          for($j=1;$j<$H;$j++){
                    echo "&nbsp;";}
             for($k=1;$k<=$i;$k++){
                    echo $k;}
     for($k=$i-1;$k>=1;$k--){
                    echo $k;}
                echo "<br />";}
        }
        foo(6);
    ?> 
      

  14.   

    发这个代码给大家帮我指导一下。<?php
    /*递归*/
    function foo($L){
       $H = intval($L/1);//获取变量的整数值 
         for($i=$L;$i>=1;$i-=1,$H++){//递归,$i接受$L传值 $i大于1时,$i自减1.$H是前面的空格
          for($j=1;$j<$H;$j++){
                    echo "&nbsp;";}
             for($k=1;$k<=$i;$k++){
                    echo $k;}
     for($k=$i-1;$k>=1;$k--){
                    echo $k;}
                echo "<br />";}
        }
        foo(6);
    ?> 
      

  15.   

    凑个热闹瞎来一个,递归的$output = "";
    foo(6, &$output);
    echo $output;function foo($n, $str) {
    $c = "";
    for($i=1;$i<$n;$i++) {
    $c = substr_replace( $c, ($i.$i), strlen($c)/2, 0 );
    }
    $c = substr_replace( $c, $n, strlen($c)/2, 0 );
    $str .= $c."\r\n";
    if ( $n != 1 ) {
    foo( --$n, &$str );
    }
    }