我初学PHP编程,碰到了递归函数的问题,望高手指导!基本为2个小问题,如下:
1,
<?php
function draw($total,$line=1,$result="<table border=2><tr>")
if($line>$total){
return;
}else{
$result .="<td>$line</td>";
$line++;
draw($total,$line,&$result);
}
echo $result .="</tr></table>";
}
draw(10);
?>代码输出的结果是10行1到10的表格,也就是10行<tr><td>1</td><td>2</td>.......<td>10</td>
我不明白为什么会输出10行,我感觉应该是1行才对,望高手指导,哦,请尽量详细指导,如果可能,请帮忙分析下流程,谢谢!
2,为什么自己测试流程,我尝试添加echo来进行输出,却发现一个比较怪的问题,代码如下:
<?php
function draw($total,$line=1,$result="<table border=2><tr>")
if($line>$total){
return;
}else{
$result .="<td>$line</td>";
                echo $line;    //此为新加
                echo $result;  //此为新加
$line++;
draw($total,$line,&$result);
}
echo $result .="</tr></table>";
}
draw(10);
结果输出为
1
2
<td>1</td>   //在这里我使用这种方式来表示表格
3
<td>1</td><td>2</td>
4
<td>1</td><td>2</td><td>3</td>
......后面不继续写了
我的问题是为什么 <td>1</td>不在1的后面输出,却到了2的后面?
谢谢各位的帮忙!
?>

解决方案 »

  1.   


    1、楼主把执行一次函数的流程的变量作出来就知道了:$total=10,$line=1
    $total=10,$line=2
    $total=10,$line=3
    $total=10,$line=4也可能是我理解错了意思,楼主“10行1到10”是什么意思??2、楼主把解释后的HTML代码贴出来吧,这个好像不是真正的HTML代码结果。
      

  2.   

    回楼上问题
    问题1
    10行1到10就是类似于问题2那样的,
    <table border=2><tr><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td>
    显示10个这样的表格
    问题2
    1<table border=2><tr><td>1</td>2<table border=2><tr><td>1</td><td>2</td>3<table border=2><tr><td>1</td><td>2</td><td>3</td>4<table border=2><tr><td>1</td><td>2</td><td>3</td><td>4</td>5<table border=2><tr><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td>6<table border=2><tr><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td>7<table border=2><tr><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td>8<table border=2><tr><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td>9<table border=2><tr><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td>10<table border=2><tr><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td><table border=2><tr><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td></tr></table><table border=2><tr><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td></tr></table></tr></table><table border=2><tr><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td></tr></table></tr></table></tr></table><table border=2><tr><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td></tr></table></tr></table></tr></table></tr></table><table border=2><tr><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td></tr></table></tr></table></tr></table></tr></table></tr></table><table border=2><tr><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td></tr></table></tr></table></tr></table></tr></table></tr></table></tr></table><table border=2><tr><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td></tr></table></tr></table></tr></table></tr></table></tr></table></tr></table></tr></table><table border=2><tr><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td></tr></table></tr></table></tr></table></tr></table></tr></table></tr></table></tr></table></tr></table><table border=2><tr><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td></tr></table></tr></table></tr></table></tr></table></tr></table></tr></table></tr></table></tr></table></tr></table><table border=2><tr><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td></tr></table></tr></table></tr></table></tr></table></tr></table></tr></table></tr></table></tr></table></tr></table></tr></table>