某个商城中用户消费1元送1积分,商家为了刺激用户消费,用户消费1000元送1200积分,消费2000元送2500积分,消费5000元送8000积分。
(1)用户消费1500元,应送____积分,消费4000元应送____积分,消费8500元应送____积分
(2)请写出一个函数实现上述逻辑,输入为用户消费的金额,输出为送的积分数量
感觉需要用到一个数学公式吧?

解决方案 »

  1.   


    <?phpif(!function_exists('getIntegral')){ function getIntegral($rmb){
    $itl = 0;
    if($rmb >= 1){
    $itl += 1;
    }
    if($rmb >= 1000){
    $itl += 1200;
    }
    if($rmb >= 2000){
    $itl += 2500;
    }
    if($rmb >= 5000){
    $itl += 8000;
    }
    return $itl;
    }
    }
    dump(getIntegral(1500));die;
      

  2.   

    消费1元送1积分!
    #4 的 getIntegral(1500) 得 1201
    显然是不对的!应为 1700
      

  3.   

    我的方法是正常思路,你可以拿去借鉴一下    /**
         * 计算积分
         */
        function calc_integral($integral)
        {
            $integral = intval($integral);
            if($integral >= 5000) {return 8000 + calc_integral($integral-5000);}
            if($integral >= 2000) {return 2500 + calc_integral($integral-2000);}
            if($integral >= 1000) {return 1200 + calc_integral($integral-1000);}
            return $integral;
        }
      

  4.   

    public function calculatePoint($consume) {
            $count_5000 = floor($consume / 5000);
            $consume = $consume - $count_5000 * 5000;
            $count_2000 = floor($consume / 2000);
            $consume = $consume - $count_2000 * 2000;
            $count_1000 = floor($consume / 1000);
            $consume = $consume - $count_1000 * 1000;
            return $count_5000 * 8000 + $count_2000 * 2500 + $count_1000 * 1200 + $consume;
        }
      

  5.   

    这个是递归思维楼上这个就可以的/**
         * 计算积分
         */
        function calc_integral($integral)
        {
            $integral = intval($integral);
            if($integral >= 5000) {return 8000 + calc_integral($integral-5000);}
            if($integral >= 2000) {return 2500 + calc_integral($integral-2000);}
            if($integral >= 1000) {return 1200 + calc_integral($integral-1000);}
            return $integral;
        }
      

  6.   

    正解:
    function calScore($consume) 
    { $score = 0;
    if($consume >= 5000 ) {
    $score = $consume + 5000;
    } elseif($consume >= 2000 && $consume < 5000) {
    $score = $consume + 2500;
    } elseif($consume >= 1000 && $consume < 2000) {
    $score = $consume + 1200;
    } else {
    $score = $consume;
    } return $score;}echo calScore(1500) . PHP_EOL;
    echo calScore(4000) . PHP_EOL;
    echo calScore(8500) . PHP_EOL;