亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#避免回溯方法心得

2020-01-24 02:25:08
字體:
來源:轉載
供稿:網友

本文實例講述了C#避免回溯方法,分享給大家供大家參考之用。具體分析如下:

首先,回溯法是不可控的,有時候會超出我們意料之外產生不妙的結果,最常見的也就是內存泄漏。。

回溯方法是很容易想到,又不容易想到的,往往,我們思維更容易進入的是回溯法。但是回溯法有著它的弊端,非常明顯的弊端是作用域內產生的變量和引用在回溯法調用未完成時,不能釋放(對于大部分編輯器來說,排除有著優化能力的編輯器)。如果我們在某一方法中使用極多的回溯調用,在方法中不能及時的對方法作用域內的變量和引用釋放,最終會造成內存不足和cpu的計算負荷增大(內存機制中可以將過剩的數據轉存到虛擬內存、硬盤,這個就不說了)。使用棧(隊)式的循環,可以輕易避免回溯法,而且棧(隊)式的數據再使用之后可以很方便的拋出移除。某些時候就是這樣,一個小小的改動,可以讓一個程序在某種特定的環境中起死回生。(之前做過一個數獨運算器的算法,后來的優化改進就是為了避免回溯)

示例代碼如下:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO;namespace 避免回溯方法{  class Program  {    static void Main(string[] args)    {      string path = AppDomain.CurrentDomain.BaseDirectory;      List<string> fileList1 = new List<string>();      FunctionHuishuo(path, ref fileList1);      List<string> fileList2 = new List<string>();      FunctionQueue(path, ref fileList2);      List<string> fileList3 = new List<string>();      FunctionStack(path, ref fileList3);    }    /// <summary>    /// 回溯法    /// </summary>    /// <param name="path"></param>    /// <param name="fileList"></param>    private static void FunctionHuishuo(string path, ref List<string> fileList)    {      if (true)      {        string[] files = null;        try        {          files = Directory.GetFiles(path);        }        catch { }        if (files != null && files.Length > 0)        {          fileList.AddRange(files);        }      }      if (true)      {        string[] folders = null;        try        {          folders = Directory.GetDirectories(path);        }        catch { }        if (folders != null && folders.Length > 0)        {          foreach (string folder in folders)          {            FunctionHuishuo(folder, ref fileList);          }        }      }    }    /// <summary>    /// 堆棧法    /// </summary>    /// <param name="path"></param>    private static void FunctionStack(string path, ref List<string> fileList)    {      Stack<string> stack = new Stack<string>();      stack.Push(path);      while (stack.Count > 0)      {        string dir = stack.Pop();        string[] files = null;        try        {          files = Directory.GetFiles(dir);        }        catch { }        if (files != null && files.Length > 0)        {          fileList.AddRange(files);        }        string[] folders = null;        try        {          folders = Directory.GetDirectories(dir);        }        catch { }        if (folders != null && folders.Length > 0)        {          foreach (string folder in folders)          {            stack.Push(folder);          }        }      }    }    /// <summary>    /// 隊列法    /// </summary>    /// <param name="path"></param>    private static void FunctionQueue(string path, ref List<string> fileList)    {      Queue<string> queue = new Queue<string>();      queue.Enqueue(path);      while (queue.Count > 0)      {        string dir = queue.Dequeue();        string[] files = null;        try        {          files = Directory.GetFiles(dir);        }        catch { }        if (files != null && files.Length > 0)        {          fileList.AddRange(files);        }        string[] folders = null;        try        {          folders = Directory.GetDirectories(dir);        }        catch { }        if (folders != null && folders.Length > 0)        {          foreach (string folder in folders)          {            queue.Enqueue(folder);          }        }      }    }  }}

請仔細對比下三種循環結構的寫法,特別注意下里面有用到  if(true){...}   ,這種方式在某些編輯環境中可以產生非常美妙的效果。

相信本文所述對大家C#程序設計的學習有一定的借鑒價值。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人综合精品| 国产精品美女主播| 欧美午夜丰满在线18影院| 91精品久久久久久久久青青| 国产精品久久久一区| 97在线观看视频国产| 日韩av男人的天堂| 亚洲高清久久久久久| 久久精品国产久精国产一老狼| 国产亚洲美女精品久久久| 欧美成人精品在线视频| 国产精选久久久久久| 成人在线一区二区| 另类色图亚洲色图| 国产成人激情视频| 国产成人精品免费久久久久| 亚洲精品ady| 91久久国产精品| 日韩美女主播视频| 国产精品一区二区av影院萌芽| 日韩av综合网| 欧美日韩成人在线播放| 国模叶桐国产精品一区| 久久这里只有精品视频首页| 久久视频国产精品免费视频在线| 成人国产亚洲精品a区天堂华泰| 精品国产一区二区三区久久狼5月| 亚洲天堂第一页| 中文字幕成人精品久久不卡| 综合136福利视频在线| 欧美成人午夜激情在线| 国产综合视频在线观看| 日韩av综合网站| 欧美大人香蕉在线| 亚洲国产欧美久久| 午夜精品久久久久久久99黑人| 视频在线一区二区| 国产精品视频不卡| 国产精品国产三级国产aⅴ9色| 日韩中文字幕欧美| 亚洲最大福利网站| 精品一区二区三区三区| 亚洲综合中文字幕在线观看| 国产精品视频白浆免费视频| 亚洲韩国欧洲国产日产av| 日韩黄色高清视频| 日韩视频免费大全中文字幕| 激情av一区二区| 国产日韩欧美视频在线| 久久中文字幕视频| 国内精品久久久久久中文字幕| 91精品国产色综合久久不卡98| 麻豆成人在线看| 亚洲精品免费网站| 孩xxxx性bbbb欧美| 色一区av在线| 精品视频在线播放免| 国产91色在线| 91成人福利在线| 欧美老女人性生活| 欧美性xxxxhd| 国产日韩欧美日韩大片| 欧美尺度大的性做爰视频| 日韩免费观看在线观看| 亚洲精品一区av在线播放| 欧美日韩国产va另类| 亚洲第一精品夜夜躁人人爽| 91精品免费看| 精品少妇一区二区30p| 欧美在线视频一二三| 国产精品一区=区| xvideos国产精品| 国产性色av一区二区| 欧美猛交ⅹxxx乱大交视频| 中文字幕亚洲自拍| 日韩中文视频免费在线观看| 欧美日韩精品二区| 欧美电影在线观看完整版| 国产精品一区二区三| 性夜试看影院91社区| 欧美激情综合色| 国产成+人+综合+亚洲欧洲| 不用播放器成人网| 欧美亚洲成人免费| 国产不卡av在线免费观看| 最近日韩中文字幕中文| 成人黄色在线播放| 亚洲色图13p| 亚洲综合中文字幕在线| 久久精品电影网站| 欧美精品www| 色偷偷91综合久久噜噜| 国产亚洲日本欧美韩国| 欧美理论电影网| 欧美性猛交xxxx免费看漫画| 一本大道香蕉久在线播放29| 亚洲韩国青草视频| 亚洲成人网在线| 国产综合久久久久久| 91精品91久久久久久| 国产成人精品电影| 国内外成人免费激情在线视频| 国产精品嫩草影院久久久| 亚洲欧美精品中文字幕在线| 成人黄色午夜影院| 日韩电影免费观看在线| 98精品在线视频| 亚洲视频一区二区| 午夜精品一区二区三区在线视| 91国产一区在线| 亚洲国产精彩中文乱码av在线播放| 裸体女人亚洲精品一区| 国产一区二区美女视频| 精品国产91久久久| 国语自产精品视频在线看| 97超级碰在线看视频免费在线看| 色99之美女主播在线视频| 国产69久久精品成人看| 国产欧美一区二区三区在线看| 亚洲人在线观看| 久久久久久久久久久免费| 久久成人一区二区| 久久亚洲精品国产亚洲老地址| 亚洲一区中文字幕| 国产精品网站大全| 亚洲欧美中文另类| 欧美性20hd另类| 久久天天躁狠狠躁夜夜av| 日韩一区在线视频| 精品久久久一区| 久久久久久成人精品| 亚洲欧美一区二区激情| 亚洲精品免费在线视频| 久久天天躁狠狠躁夜夜av| 亚洲天堂av在线免费| 日本亚洲欧洲色| 日本三级久久久| 国产成人精品久久二区二区91| xxxx欧美18另类的高清| 青青草国产精品一区二区| 国产一区二区三区网站| 亚洲天堂第二页| 国产不卡一区二区在线播放| 91av免费观看91av精品在线| 日本高清视频精品| 俺去亚洲欧洲欧美日韩| 福利一区视频在线观看| 日韩av在线免费| 精品无码久久久久久国产| 亚洲日本成人女熟在线观看| 久久久亚洲影院你懂的| 国模精品一区二区三区色天香| 久久精品亚洲94久久精品| 日韩中文字幕在线观看| 久久艳片www.17c.com| 97视频人免费观看| 国产在线精品成人一区二区三区| 成人写真视频福利网| 国产成人97精品免费看片| 日韩欧美亚洲范冰冰与中字| 91国产视频在线| 国产精品亚洲视频在线观看| 亚洲经典中文字幕| 一区二区亚洲精品国产|