php递归详解编程语言
2023-06-13 09:11:47 时间
//欧几里得算法:
//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);
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/17301.html
cjavaphp相关文章
- PHP集成开发:PhpStorm 2022
- 快速修改PHP镜像中的php.ini并生效 - wuuconix's blog
- MongoDB数据库常用操作PHP代码详解大数据
- PHP实现将数组插入MySQL数据库(php数组插入mysql)
- 妙用Linux:快速启动PHP程序(linux如何启动php)
- PHP Fatal error: Uncaught Error: Call to undefined function pcntl_fork().. 开启php pcntl扩展实现多进程详解编程语言
- PHP多进程并行执行php脚本详解编程语言
- php递归删除文件夹详解编程语言
- 强大的PHP环境,支持Redis全面提升效能(php支持redis)
- PHP和Linux技术结合的灵活力量(php和linux)
- 监控Redis运行状态:妙用PHP(php监听redis)
- PHP实现MySQL表格删除(php删除mysql表)
- Linux下如何调试PHP程序(linux调试php)
- PHP MySQL实现数据降序排列(phpmysql降序)
- PHP 中使用 Redis 队列优化应用性能(phpredis队列)
- 学习PHP连接MySQL:简易教程分享(php连接mysql教程)
- PHP编程查询MySQL数据库:入门指南(php 查询 mysql)
- 使用PHP扩展开发MSSQL应用(php扩展使用mssql)
- PHP暂不支持MSSQL数据库的连接(php不支持mssql)
- 一步一步教你PHP操作MSSQL的下载方法(php_mssql下载)
- PHP与MSSQL数据库之间的转义学习(php mssql 转义)
- PHP与MySQL的更新:让Web应用更稳定!(php mysql 更新)
- 使用PHP实现Redis自旋锁(redis自旋锁php)
- 以Redis为中心 轻松实现PHP消息订阅(redis消息订阅php)
- BS结构中使用PHP访问ORACLELOB
- PHP+MySQL5.0中文乱码解决方法
- 一个自定义位数的php多用户计数器代码
- php在字符串中查找另一个字符串
- 解析PHP中如何将数组变量写入文件
- PHP获取远程文件大小的3种解决方法
- PHP整数取余返回负数的相关解决方法
- Windows系统下Apache、PHP无法启动问题总结