当前位置: 首页 > news >正文

广告网站模板下载交易平台网站怎么做

广告网站模板下载,交易平台网站怎么做,搜索引擎平台有哪些,网站建设地位最近写代码碰到了一个bug&#xff0c;就是递归次数太多爆堆栈了&#xff0c;然后就写了一个递归工具来解决这个问题。 using System; using System.Collections.Generic;/// <summary> /// 递归工具 /// </summary> public static class RecursionTool {//递归方式…

最近写代码碰到了一个bug,就是递归次数太多爆堆栈了,然后就写了一个递归工具来解决这个问题。

using System;
using System.Collections.Generic;/// <summary>
/// 递归工具
/// </summary>
public static class RecursionTool
{//递归方式 1 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/// <summary>/// 树节点接口/// </summary>public interface ITreeNode{/// <summary>/// 访问标记/// </summary>bool Visited { get; set; }/// <summary>/// 子节点/// </summary>List<ITreeNode> Children { get; set; }}/// <summary>/// 递归算法的非递归实现/// 以节点树的方式递归/// </summary>public static (bool result, object args) Recursive(IEnumerable<ITreeNode> rootNodes,Func<ITreeNode, (bool result, object args)> handleNode){var stack = new Stack<ITreeNode>();foreach (var item in rootNodes){item.Visited = false;stack.Push(item);}while (stack.Count > 0){var rootNode = stack.Peek();//没访问过,且有子节点时if (rootNode.Visited == false && rootNode.Children != null && rootNode.Children.Count > 0){rootNode.Visited = true;//把子节点全部入栈foreach (var item in rootNode.Children){item.Visited = false;stack.Push(item);}}//访问处理根节点else{rootNode = stack.Pop();rootNode.Visited = false;if (handleNode != null){var tuple = handleNode(rootNode);if (tuple.result){return tuple;}}}}return (false, null);}//递归方式 2 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/// <summary>/// 递归状态/// </summary>public enum ERecursiveState{Finish,Next,Skip,}/// <summary>/// 递归算法的非递归实现/// 根据回调里的逻辑递归/// </summary>public static (bool result, object args) Recursive<TNode>(IEnumerable<TNode> rootNodes,Func<TNode, (ERecursiveState state, bool result, object args, IEnumerable<TNode> nexts)> handleNode){var stack = new Stack<TNode>();foreach (var item in rootNodes){stack.Push(item);}while (stack.Count > 0){var rootNode = stack.Pop();if (handleNode != null){var tuple = handleNode(rootNode);switch (tuple.state){case ERecursiveState.Finish:return (tuple.result, tuple.args);case ERecursiveState.Next:{if (tuple.nexts != null){foreach (var item in tuple.nexts){stack.Push(item);}}}break;}}}return (false, null);}}

也很久没写文章了,顺手记录一下。

http://www.yayakq.cn/news/869854/

相关文章:

  • 慈溪住房和城乡建设部网站贪玩游戏官网
  • 手机网站重要性六安app开发公司
  • 门户网站的三个基本特征施工企业发展的建议
  • 松江品划企业网站建设北京通信管理局网站备案处
  • 做优品购类似网站北京住房和城乡建设部官方网站
  • 网站建设的 几点wordpress音乐盒
  • 注册网站域名要钱吗ds2600ii色带
  • 农业电商网站建设pp网页设计专业学校
  • 网站推广公司简介厦门网盛网站开发
  • 长沙中建设计院网站完整网站建设案例教程
  • 华为云自助建站好不好电子商务网页设计与网站建设
  • 深圳网站平台建设eclipse 做网站
  • 手机网站怎样做中国建设银行公积金网缴网站
  • 德赞网站建设网站制作网站二级域名
  • 你会怎么做外国的网站吗网络培训机构排名
  • 开源手机建站系统某些网站dns解析失败
  • 广安网站设计公司上海公司买车上牌规定
  • 做电影网站有什么流媒体好ppt汇报模板免费下载
  • 网站建设视频万网郑州做定制网站的公司哪家好
  • 兴扬汽车网站谁做的网页设计代码图片大全高清
  • 网站源码平台seo是什么职位
  • 做企业培训的网站总部在北京的互联网企业
  • 有学做美食的网站吗大型网络游戏排行榜
  • 企业网站形象建设东莞洪梅网站建设
  • 浙江建设网站国家时事新闻2021最新
  • 网站名称创意大全导购wordpress主题
  • 免费建视频网站做电商在什么网站吗
  • 渭南网站建设与维护扁平化设计网站
  • 微信里面如何做网站常州钟楼建设局网站
  • 网站建设代码流程电商和网站设计哪个好