首页 > 编程语言 > 详细

递归算法学习

时间:2019-03-19 16:14:51      阅读:112      评论:0      收藏:0      [点我收藏+]

题目:写一个函数, 满足如下条件:

$arr = [
    "Name"  => ‘test‘,
    "Data"  => [
            "Uid"   => 1,
            "Name"  => "eva",
            "Thread" => [
                "ID1"   => 22,
                "ID2"   => 33,
                ],
        ],
    "Title" => "get a string",
]; 

数组样例如上,

(1)所有key小写
(2)根据key 升序排列
(3)多维数组 $arr[‘abc‘][‘efg‘] = 1变成 abc.efg = 1
应用场景是什么?

解答:

<?php
$arr = [
    "Name"  => ‘test‘,
   "Data"  => [
            "Uid"   => 1,
            "Name"  => "eva",
            "Thread" => [
                "ID1"   => 22,
                "ID2"   => 33,
                ],
        ],
    "Title" => "get a string",
]; 
$testobj = new test();
$testobj->lower($arr);

$prefix = "";
$newArr = [];
$testobj->getPrefix($arr,$prefix,$newArr);
ksort($newArr);
$finalStr = "";
foreach ($newArr as $key=>$value){
    $finalStr .= $key."=".$value."&";
}
var_dump(rtrim($finalStr,"&"));
class test{
   
    function getPrefix($arr,&$prefix,&$newArr){
        foreach ($arr as $key=>$value){
            if(is_array($value)){
                $prefix .=$key.".";
                self::getPrefix($value,$prefix,$newArr);
                $prefix = "";
            }else{
                $newArr[$prefix.$key]=$value;
            }
            
        }
        
    }
   
    function lower(&$arr){
        $arr = array_change_key_case($arr);
        foreach ($arr as $key=>&$value){
            if(is_array($value)){
                self::lower($value);
            }
            
        }
    }
}
?>

 题目:用户充值优惠计算方法:

解答:

<?php
    var_dump(discountAmount(800));
    //$amount 为原价
    function discountAmount($amount){
    //价格 => 折扣
$arr = [ 10 =>1000,   100=> 999, 200=>998, 300=>997, 400=>996, 500=>995, 600=>994, 700=> 993, 800=> 992, 900=>991, 1000=> 990, 10000=> 989, 50000=>988, 500000=> 987, ]; krsort($arr); foreach ($arr as $min=>$discount){ if($amount>=$min){ return $dicountAmount = $amount * $discount /1000; } } } ?>

 

递归算法学习

原文:https://www.cnblogs.com/huaerr/p/10558975.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!