文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>递归转换为非递归使用比较

递归转换为非递归使用比较

时间:2011-05-03  来源:陈高

1.1.1. 简介

ObservableCollection<E_Region> proviceList = new ObservableCollection<E_Region>();

              E_Region regionTemp = new E_Region(); // 
for (int i = 0; i < dt.Rows.Count; i++)
{
regionTemp = new E_Region();
regionTemp.RegionID = dt.Rows[i]["RegionID"].ToString();
regionTemp.RegionFather = dt.Rows[i]["RegionFather"].ToString();
regionTemp.RegionName = dt.Rows[i]["RegionName"].ToString();
regionTemp.RegionDescription = dt.Rows[i]["RegionDescription"].ToString();
FindRegion(regionTemp, region, proviceList); //
region = regionTemp;
}
 
/// <summary>
///
递归加载数据
/// </summary>
/// <param name="temp">
当前对象</param>
/// <param name="parent">
父级对象</param>
/// <param name=" proviceList ">树形数据集合</param>
private void FindRegion(E_Region temp, E_Region parent, ObservableCollection<E_Region> proviceList )
{
if (temp.RegionFather == "0")
{
temp.ParentRegion = null;
proviceList.Add(temp);
}
else if (temp.RegionFather != parent.RegionFather)
{
if (temp.RegionFather == parent.RegionID)
{
parent.RegionItemView1.Add(temp);
temp.ParentRegion = parent;
}
else
{
FindRegion(temp, parent.ParentRegion);
}
}
else if (parent.RegionFather == parent.RegionFather)
{
temp.ParentRegion = parent.ParentRegion;
parent.ParentRegion.RegionItemView1.Add(temp);
}
}
 
采用非递归算法构造省市县树形结构,提高了效率,从以往的20秒多提高到现在的5秒。

1.1.4. 存在问题及改进

用递归算法分析问题、非递归算法解决问题,这种解决问题的方式比较难掌握,需要进一步的了解和研究。

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载