php基础算法集合

1 篇文章 0 订阅

1,用算法画菱形(结果有两种)

<?php
/**
 * Content: php基础算法
 */
//画菱形固定长度
//上半部
/**
 * 只要下半部分与上班部分对称,但不输出下半部分最长的那个
 */
for($i=0;$i<=3;$i++) {//3表示左右各三个星花,因为在输出星花处用的是小于等于2*$i
    for($j=0;$j<=3-$i;$j++) {
        echo "  ";//每次循环输出两个空格,循环几次就会有2倍的输出
    }
    for($k=0;$k<=2*$i;$k++) {//每次循环都输出奇数个星花
        echo "*";
    }
    echo "<br/>";
}
//下半部
for($a=0;$a<=2;$a++) {//与上半部分倒数第二行开始一一对称
    for($c=0;$c<=$a+1;$c++) {
        echo "  ";
    }
    for($b=4-2*$a+1;$b> 0;$b--) {
        echo "*";
    }

    echo "<br/>";
}
echo "<hr/>";
/**
 *输出下半部分最长的那一行,并且以后的输出跟上半部分对应
 */
for($i=0;$i<=3;$i++) {//3表示左右各三个星花,因为在输出星花处用的是小于等于2*$i
    for($j=0;$j<=3-$i;$j++) {
        echo "  ";//每次循环输出两个空格,循环几次就会有2倍的输出
    }
    for($k=0;$k<=2*$i;$k++) {//每次循环都输出奇数个星花
        echo "*";
    }
    echo "<br/>";
}
//下半部
for($a=0;$a<=4;$a++) {//多输出一行,使得上半部分与下半部分除去最长一行一一对应
    for($c=0;$c<$a;$c++) {
        echo "  ";
    }
    for($b=8-2*$a+1;$b> 0;$b--) {
        echo "*";
    }

    echo "<br/>";
}
//画菱形传参数
function lingxing($x) {
    /**
     * 如果想输出自定义的长度,可以调用此函数
     * $x代表最长那行输出星花的最大个数为(2*($x+1)+1)
     */
    for($i=0;$i<=$x;$i++) {//左右个$x个星花
        for($j=0;$j<=$x-$i;$j++) {
            echo "  ";
        }
        for($k=0;$k<=2*$i;$k++) {//表示输出的行数
            echo "*";
        }
        echo "<br/>";
    }
    for($a=0;$a<=$x+1;$a++) {
        for($c=0;$c<$a;$c++) {
            echo "  ";
        }
        for($b=2*($x+1)-2*$a+1;$b>0;$b--) {
            echo "*";
        }

        echo "<br/>";
    }
}
echo "<hr/>";
lingxing(2);
echo "<hr/>";
2,用算法画三角形

//画三角形:如菱形的上半部分或者下半部分都可以当作三角形
/**
 * 普通算法
 */
for($i=0;$i<=3;$i++) {
    for($j=0;$j<=3-$i;$j++){
        echo "  ";
    }
    for($k=0;$k<=2*$i;$k++){
        echo "*";
    }
    echo "<br/>";
}
echo "<hr/>";
/**
 * 直角三角形
 */
for($i=0;$i<=3;$i++ ){
    for($a=0;$a<=3-$i;$a++){
        echo "  ";
    }
    for($b=0;$b<=$i;$b++) {
        echo "*";
    }
    echo "<br/>";
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值