php 递归算法
通过递归实现阶乘
function multi($n){
if($n == 0){
return 1 ;//终止递归
}
$value = $n * multi($n-1);
return $value;
} 通过递归实现斐波那契数列
function Fib($n){
if($n ==1||$n==0){
return 1;//终止递归
}
$value = Fib($n-1)+Fib($n-2);
return $value;
}
echo Fib(6);
$category = [
[
'id' =>1,
'name'=>'男装',
'pid'=>0,
],
[
'id'=>2,
'name'=>'女装',
'pid'=>0, ],
[
'id'=>3,
'name'=>'男士外套',
'pid' =>1,
],
[
'id' =>4,
'name'=>'夹克',
'pid' =>3, ],
[
'id'=>5,
'name'=>'棉衣',
'pid'=> 3,
],
];
通过父类ID获取所有的子类
function recursiveCategory($pid,$category){
$data = [];
foreach ($category as $item){
if($item['pid']==$pid){
$arr['id'] = $item['id'];
$arr['name'] = $item['name'];
$cate = recursiveCategory($item['id'],$category);
if(!empty($cate)){
$arr[] =$cate;
}
$data[] = $arr;
unset($arr);
}
}
return $data;
};
通过子类获取所有的父类
function getCategoryByChild($childId,$category){
$data = [];
foreach ($category as $item){
if($item['id'] == $childId){
$arr['id'] =$item['id'];
$arr['name']= $item['name'];
if($item['pid']!=0){
$arr[] = getCategoryByChild($item['pid'],$category);
}
$data[]=$arr;
}
}
return $data;
}
php 递归算法的更多相关文章
- 递归算法经典实例小结(C#实现)
一 .递归算法简介 在数学与计算机科学中,递归是指在函数的定义中使用函数自身的方法. 递归算法是一种直接或者间接地调用自身算法的过程.在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往 ...
- 转: JAVA递归算法实例小结
一.递归算法设计的基本思想是: 对于一个复杂的问题,把原问题分解为若干个相对简单类同的子问题,继续下去直到子问题简单到能够直接求解,也就是说到了递推的出口,这样原问题就有递推得解. 在做递归算法的时候 ...
- xml 读取递归算法
xml 读取递归算法:
- 后台返回字符串类型function的处理 (递归算法)
$(function(){ $.ajax({ type: "post", url: "${ctx}/modules/fos/reference/echart", ...
- JAVA递归算法
1.什么是递归算法 递归算法就是直接或间接调用自己的算法 2.问题1:一列数的规则如下: 1.1.2.3.5.8.13.21.34 ,求第30位数是多少?使用递归实现 public class Fib ...
- 【Tree 1】树形结构数据呈现的递归算法实现
一.基本概况 在我的项目中,常常会用到树形结构的数据,最为明显的就是左边菜单栏,类似于window folder一样的东西. 而我之前一直是借助前端封装好的ZTree等工具实现展示,而后台则通常使用递 ...
- N个数全排列的非递归算法
//N个数全排列的非递归算法 #include"stdio.h" void swap(int &a, int &b) { int temp; temp = a; a ...
- 递归算法(一)——akm
要求 已知akm函数如下: { n+1 while m=0 } => Rule I akm(m,n)= { akm(m-1,1) while n ...
- C# 递归算法与冒泡
C# 递归算法求 1,1,2,3,5,8,13···static void Main(string[] args){ int[] cSum = new int[10];for (int i = 0; ...
- 递归算法实现10进制到N进制的转换
#include<iostream> using namespace std; int BaseTrans(int data,int B){ int s; ) ; //结束递归算法 s=d ...
随机推荐
- lay-verify
lay-verify:是表单验证的关键字 required (必填项) phone(手机号) email(邮箱) url(网址) number(数字) date(日期) identity(身份证) 自 ...
- chamfer_pcd
import tensorflow as tf import numpy as np def distance_matrix(array1, array2): """ a ...
- 【剑指offer】面试题 23. 链表中环的入口节点
面试题 23. 链表中环的入口节点
- win10无法安装软件解决
https://www.windowscentral.com/how-fix-network-resource-unavailable-install-error-windows-10
- 关于st表
#include<cstdio> #include<iostream> #include<cmath> #include<cctype> #includ ...
- git使用代理加快下载
git -c http.proxy=socks5://127.0.0.1:1086 clone https://github.com/.../...
- [LOJ3086] [GXOI2019] 逼死强迫症
题目链接 LOJ:https://loj.ac/problem/3086 洛谷:https://www.luogu.org/problemnew/show/P5303 Solution 显然不考虑\( ...
- uni-app项目导入第三方组件库muse-ui
你说uni-app是什么 我说,uni-app是一套基于vue.js开发跨平台应用的前端框架,可编译多个平台,比如:Android.IOS.H5.微信小程序.支付宝小程序.头条小程序.百度小程序 懂行 ...
- 解析:让你弄懂redux原理
作者: HerryLo 本文永久有效链接: https://github.com/AttemptWeb...... Redux是JavaScript状态容器,提供可预测化的状态管理. 在实际开发中,常 ...
- 可拖拽dialog
指令的封装转自https://blog.csdn.net/sinat_21902709/article/details/86545444 可拖拽dialog应用于很多弹出框,所以需要作用于全局 在插件 ...