PHP各种算法

来源:互联网 发布:stm32仿真软件 编辑:程序博客网 时间:2024/05/20 11:24

                                   PHP各种算法题

a.假设我们第一天在吃饭的时候,掉了一粒米,没有在意,第二天掉了两粒,第三天掉了6粒,此后的每天都会掉落从第一天开始数的天数*前一天掉落的米粒数,问:我们在第10天会掉落多少粒米?

    /*阶乘实现*/    function jiecheng($mi)    {        $arr[1] = 1; //定义第一天掉了一粒米        for($i=2;$i<=$mi;$i++)        {            $arr[$i] = $i*$arr[$i-1];        }        $sum = $arr[$mi-1];        return "我们在第10天的时候会掉".$sum."粒米";    }    echo jiecheng(10);    /*递归实现*/    function digui($num)    {        if($num<0)        {            return "shuru ";        }        else if($num==0||$num==1)        {            return 1;        }        else        {            return self::digui($num-1)*$num."粒米";           }    }    echo digui(10);

b.猴子选大王 : m只猴子围坐成一个圈,按顺时针方向从1到m编号。然后从1号猴子开始沿顺时针方向从1开始报数,报到n的猴子出局,再从刚出局猴子的下一个位置重新开始报数,如此重复,直至剩下一个猴子,它就是大王。

    function arr($m){        for($i=1;$i<=$m;$i++){            $arr[$i] ='第'.$i.'只';        }        return $arr;    }    function hz($m,$n){        $arr = arr($m);        $j=1;        while(count($arr)>1)        {            if($j%$n != 0)            {                array_push($arr,$arr[$j]);            }            unset($arr[$j]);            $j++;        }        return $arr;    }    print_r(hz(5,4));

c.羊生羊 : 有一母羊,到5岁可生育,每年一头,第一年公羊、第二年母羊,依次循环。到15岁绝育,不再能生,20岁死亡,问n年后有多少头羊?

    function sheep($year)    {        static $num = 1; //第一年 定义 一只羊        for($i=1;$i<=$year;$i++)        {            if($i>4&&$i<15)             {                $num++;                if($i%2==1)                    {                    self::sheep($year-$i);                   }            }            if($i==20)            {                $num--;            }        }        return $num;    }

d.斐波那契数列—–递归 (一)

    function recursion($num)    {        if($num<1)        {            return -1;        }        if($num==1||$num==2)        {            return 1;        }        return recursion($num-1)+recursion($num-2);    }    for($i=1;$i<=20;$i++)  //循环显示    {        $recursion .= recursion($i).",";    }    $recursion = substr($recursion,0,-1);    echo $recursion;

d.斐波那契数列—–迭代(二)

    function iteration($num)    {        if($num<1)        {            return -1;        }        $a[0] = 1;        $a[1] = 1;        for($i=2;$i<=$num;$i++)        {            $a[$i] = $a[$i-1]+$a[$i-2];        }        return $a;    }    $iteration = implode(",",iteration(0)); //拼接成数组    echo $iteration;

d.斐波那契数列—–数组(三)

    function arrays($num)    {        $arr = array();        for($i=1;$i<=$num;$i++)        {            if($i==1||$i==2)            {                $arr[$i] = 1;            }            else            {                $arr[$i] = $arr[$i-1]+$arr[$i-2];            }        }        return $arr;    }    print_r(arrays(10));

d.斐波那契数列~~~杨辉三角(四)

    <table border="1">        <?php             $num = 14;             $arr = array();            for($i=1;$i<=$num;$i++)            {                echo "<tr>";                for($j=1;$j<=$i;$j++)                {                    if($j==0||$i==$j)                    {                        $arr[$i][$j] = 1;                    }                    else                    {                        $arr[$i][$j] = $arr[$i-1][$j]+$arr[$i-1][$j-1];                    }                    echo "<td>";                    echo $arr[$i][$j];                    echo "</td>";                }                echo "</tr>";            }         ?>     </table>

e.无限极循环—–递归(一)

    function digui($list,$id)  //递归现实    {         $arr = array();         foreach($list as $key=>$val)         {            if($id==$val['id'])            {                $arr[] = $val;                $arr = array_merge($arr,digui($list,$val['pid']));            }         }         return $arr;    }    print_r(digui($list,26));

e.无限极循环—–迭代(二)

    function diedai($list,$id)  //迭代实现    {        $arr = array();        while($id>0)        {            foreach($list as $key=>$val)            {                if($val['id']==$id)                {                    $arr[] = $val;                    $id = $val['pid'];                    break;                }            }        }        return $arr;    }    print_r(diedai($list,26));

e.无限极循环~~~家族树(三)

    function family($list,$pid=0,$level=1)    {        $arr = array();        foreach($list as $key=>$val)        {            if($val['pid']==$pid)            {                $val['level'] =  $level;                $val['html'] = str_repeat("**",$level);                $arr[] = $val;                $arr = array_merge($arr,family($list,$val['id'],$level+1));            }        }        return $arr;    }    $con = family($list,0,1);
0 0
原创粉丝点击