七道php经典算法题

1、通过for循环将数组中值求和、求平均值

$num=[1,2,30,5,4,9];
$sum=0;
for($i=0,$n=count($num);$i<$n;$i++){
    $sum+=$num[$i];
}
echo '和是:'.$sum,'<br>'; 
echo '平均值是:'.number_format($sum/count($num),1); //精确到小数点后面一位

2、数组翻转

$stu=['tom','berry','jeck','rose','ketty'];
for($i=0,$j=count($stu)-1;$i<$j;$i++,$j--){
    [$stu[$i],$stu[$j]]=[$stu[$j],$stu[$i]];//元素交换
}
print_r($stu)

3、遍历二维数组

$stu=[
    [1,2,3,4],
    ['tom','jery','rose','ketty']
];
for($i=0;$i<count($stu);$i++){ //循环第一列
    for($j=0;$j<count($stu[$i]);$j++){ //循环第二列
        echo $stu[$i][$j];
    }
    echo '<br>';
}

4、 循环输出1-100,其中3的倍数输出A,5的倍数输出B,15输出C

for($i=1;$i<=100;$i++){
   if($i%15==0)
     echo 'C';
   elseif($i%3==0)
     echo 'A';
   elseif($i%5==0)
     echo 'B';
   else 
     echo $i;
   echo '&nbsp';
}

5、打印水仙花数

for($i=100;$i<=999;$i++){
    $a=(int)($i/100);      //百位数
    $b=(int)(($i%100)/10); //十位数
    $c=$i%10;              //个位数
    if($i==pow($a,3)+pow($b,3)+pow($c,3))
        echo $i,'<br>';  //pow($a,3)表示$a的三次方
}

6、打印100以内的斐波那契数(迭代法)1 1 2 3 5 8 13 21 …

$num1=1;
$num2=1;
echo $num1,'&nbsp;',$num2,'&nbsp;';
while(true){
    $num3=$num2+$num1; //第三个数是前面俩个数的和
    if($num3>100)      //超过100就终止循环
        break;
    echo $num3,'&nbsp;';
    $num1=$num2;       //将$num2移给$num1
    $num2=$num3;       //将$num3移给$num2
}

7、一只猴子看守一堆桃子,第一天吃了一半后又多吃了1个,第二天一样,到第十天的时候就剩下一个桃子,请问原来有几个桃子?

// 分析
// f(n)-(f(n)/2+1)=f(n+1)
// =>f(n)/2-1=f(n+1)
// =>f(n)=(f(n+1)+1)*2
function getTao($n){
    if($n==10)
        return 1;
    return (getTao($n+1)+1)*2;
}
echo getTao(1);  //1534
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值