可能和贪吃蛇有点类似的东西吧~反正使用的绝对的递归骂我的思路如下;我们输出的时候,应该是从外面输出。所以,我们在递归的时候,从里面往外递归。也就是说,先得到最里面的那个东西,然后再得到往外的一层。按照你给出的图像分析得出,矩阵的大小是1+2*(n-1)。嘿嘿~这个就好做的多了…… //越小,越是在里面 $str[]="a1"; $str[]="a2"; $str[]="a3"; $str[]="a4"; $l=count($str); function test($num,$num1){//参数就是数字, if ($num!=$num1){ echo $str[$num〕; for ($i=0;$i<($num-2)*2+1;$i++){ echo $str[$num]; } } else{ for ($i=0;$i<($num-1)*2+1;$i++){ echo $str[$num]; } } test($num-1,$num)//在这里,你就知道了为什么有两个参数了吧? }test($l,$;);唉~不知道对不对,反正是没有时间验证了~
有错误……错误的地方换不少……//越小,越是在里面 $str[]="a1"; $str[]="a2"; $str[]="a3"; $str[]="a4"; $l=count($str); function test($num,$num1){//参数就是数字, if ($num!=$num1){ echo $str[$num〕; for ($i=0;$i<($num-2)*2+1;$i++){ echo $str[$num]; } } else{ for ($i=0;$i<($num-1)*2+1;$i++){ echo $str[$num]; } } if ($num-1>=0){test($num-1,$num);}//在这里,你就知道了为什么有两个参数了吧? }test($l,$;);
test(($num,$num1) 两个参数是什么意思呢?
if ($num-1>=0){test($num-1,$num);}//在这里,你就知道了为什么有两个参数了吧?看到这个了吧?主要是为了能够参与比较的结果,为了这个,只能使用两个参数了,第一个是当前的数组数,第二个是前一个数组数。这个函数写的太仓促,没有自己试验,不过程序逻辑应该是没有问题的。哪里有问题,你自己查看下吧。忘记说了,这个只能输出上半部分,下半部分是这个的逆输出。函数差不多,稍微改动下就OK了~
//越小,越是在里面
$str[]="a1";
$str[]="a2";
$str[]="a3";
$str[]="a4";
$l=count($str);
function test($num,$num1){//参数就是数字,
if ($num!=$num1){
echo $str[$num〕;
for ($i=0;$i<($num-2)*2+1;$i++){
echo $str[$num];
}
}
else{
for ($i=0;$i<($num-1)*2+1;$i++){
echo $str[$num];
}
}
test($num-1,$num)//在这里,你就知道了为什么有两个参数了吧?
}test($l,$;);唉~不知道对不对,反正是没有时间验证了~
$str[]="a1";
$str[]="a2";
$str[]="a3";
$str[]="a4";
$l=count($str);
function test($num,$num1){//参数就是数字,
if ($num!=$num1){
echo $str[$num〕;
for ($i=0;$i<($num-2)*2+1;$i++){
echo $str[$num];
}
}
else{
for ($i=0;$i<($num-1)*2+1;$i++){
echo $str[$num];
}
}
if ($num-1>=0){test($num-1,$num);}//在这里,你就知道了为什么有两个参数了吧?
}test($l,$;);
两个参数是什么意思呢?
$aa[0] = "0";
$aa[1] = "1";
$aa[2] = "2";
$aa[3] = "3";$count = count($aa)*2-1;
for($b=0;$b<count($aa);$b++)
{ for($i=$b;$i<$count-$b;$i++)
{
$result[$b][$i] = $aa[$b];
} for($i=$b;$i<$count-$b;$i++)
{
$result[$count-$b-1][$i] = $aa[$b];
} for($i=$b;$i<$count-$b;$i++)
{
$result[$i][$b] = $aa[$b];
} for($i=$b;$i<$count-$b;$i++)
{
$result[$count-$i-1][$count-$b-1] = $aa[$b];
}}
echo "\n\n ";
for($i=0;$i<count($result);$i++)
{ for($j=0;$j<count($result[$i]);$j++)
{
echo $result[$i][$j]." ";
}
echo "\n ";
}
for($j=0; $j<$cnt; $j++) {
echo $ar[$j<$i ? $j : $i];
}
for($j=$cnt-2; $j>=0; $j--) {
echo $ar[$j<$i ? $j : $i];
}
echo '<br>';
}
for($i=$cnt-2; $i>=0; $i--) {
for($j=0; $j<$cnt; $j++) {
echo $ar[$j<$i ? $j : $i];
}
for($j=$cnt-2; $j>=0; $j--) {
echo $ar[$j<$i ? $j : $i];
}
echo '<br>';
}
for($i=-$cnt; $i<$cnt; $i++) {
for($j=-$cnt; $j<$cnt; $j++) {
if(abs($j) < abs($i)) {
echo $ar[$cnt-1-abs($i)];
}else {
echo $ar[$cnt-1-abs($j)];
}
}
echo '<br>';
}aaaaaaa
abbbbba
abcccba
abcdcba
abcccba
abbbbba
aaaaaaa去掉 $cnt-1- 即
for($i=-$cnt; $i<$cnt; $i++) {
for($j=-$cnt; $j<$cnt; $j++) {
if(abs($j) < abs($i)) {
echo $ar[abs($i)];
}else {
echo $ar[abs($j)];
}
}
echo '<br>';
}ddddddd
dcccccd
dcbbbcd
dcbabcd
dcbbbcd
dcccccd
ddddddd