zoukankan      html  css  js  c++  java
  • php递归

    //欧几里得算法:     
    //1:设两个正整数m,n,且已知m>n
    //
    //2:令r=m%n('%'代表取余)
    //
    //3:若r=0(即n整除m),结束运算,n即为结果
    //
    //4:否则令m=n,n=r,并返回步骤1
    //可归纳为求两个数的最大公约数
    function test($m, $n) {
      $r = $m % $n;
     if ($r == 0) {
        $gys = $n;
        return $gys;
      }else {
        $m = $n;
        $n = $r;
        return test($m,$n)
    }
    };


    //使用递归求数组中所有数字的和
    function sumArr($array) {
      $sum = 0;
      if (count($array) == 0) {
        return $sum;
      }elseif (count($array) == 1) {
        return $sum += $array[0];
      }else {
        return $sum = array_shift($array) + sumArr($array);
      }
    }

    //使用递归求数组的长度
    function countArr($array){
      if (empty($array)) {
        return 0;
      }else {
        array_shift($array);
        return 1 + countArr($array);
      }
    }


    //使用递归求数组中的最大元素
    function maxArr($array){
      $first = array_shift($array);
      if ($first > max($array)) {
        return $first;
      }else {
        return max($array);
      }
    }

    //php实现快速排序算法
    function quickSort($array) {
      $count = count($array);
      $less = []; //比基准值小的元素
      $greater = []; //比基准值大的元素
      if ($count < 2) {
        return $array;
      }
    $pivot = $array[0]; //基准值
      for ($i=1; $i < $count; $i++) {
        if ($array[$i] < $pivot) {
          $less[] = $array[$i];
        }else {
          $greater[] = $array[$i];
        }
      }
    //对小于基准值的元素进行快排
      $less = quickSort($less);
      //对大于基准值的元素进行快排
      $greater = quickSort($greater);
      $array = array_merge($less, array($pivot), $greater);
      return $array;
    }

    //php实现二分查找

    function binarySearch($array, $item, $low=0, $high=0) {
        if(count($array)!=0 and $high==0){ //判断是否为第一次调用         
        //数组的元素个数
        $high = count($array);
      }
    if ($low <= $high) {
        $mid = intval(($low + $high) / 2);
        if ($array[$mid] == $item) { //刚好是要找的元素
          return $array[$mid];
        } elseif ($array[$mid] > $item) { //要找的元素落在了左半区
          $high = $mid - 1;
          return binarySearch($array, $item, $low, $high);
        } else { //要找的元素落在了右半区
          $low = $mid + 1;
          //var_dump($low);die;
          return binarySearch($array, $item, $low, $high);
        }
       }
    return "there is not this value";
    }

    $result1 = call_user_func('test', 1680, 640);
    var_dump($result1);

    $array = [10,20,30,40];
    $result2 = call_user_func('sumArr', $array);
    var_dump($result2);


    $array = [10,23,24,42,12,39];
    $result3 = call_user_func('countArr', $array);
    var_dump($result3);

    $array = [10,23,24,42,12,39];
    $result4 = call_user_func('maxArr', $array);
    var_dump($result4);

    $array = [10,23,24,42,12,39];
    $result5 = call_user_func('quickSort', $array);
    var_dump($result5);
    $array = [2,4,6,8,10,12,14,16,18,20]; 
    $result6 = binarySearch($array, 15,0,0);
    echo("result6 = ".$result6);
    
    
  • 相关阅读:
    source : not found 原因及解决办法
    hdfs 数据坏块导致datanode不能正常上报数据块
    hadoop 基准测试
    Linux yum 安装mysql的时候指定安装版本
    如何从头构建一个只有bash的镜像
    创建自己的基础镜像
    go学习(2)变量
    Go学习(1)go安装
    spark on yarn 错误
    mysqld: File './mysql-bin.index' not found (Errcode: 13
  • 原文地址:https://www.cnblogs.com/lty-fly/p/11690686.html
Copyright © 2011-2022 走看看