StackOverflowException when I call the same function many times
我正在创建一个函数,它在特定的坐标中创建一个点,称其自身移动到每个基点(直到一个标记限制)。
存储超过5000个位置时,出现StackOverflowException错误。
更简单:我创建的点的坐标只移动到北方,仍然给出相同的错误
*北界、纬度和经度是常数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | public void CreatePosition(decimal latitude, decimal longitude) { boolean end = true; Positions.Add(new Position(latitude, longitude)); if (NorthLimit > (latitude + LatitudeDeviation)) { CreatePosition(latitude + LatitudeDeviation, longitude); end = false; } if (end == true) { // It ends :) } } |
我应该采取什么措施?
回答你编辑过的问题,你刚往北走。
您需要将递归算法转换为迭代算法。这可能会变得相当复杂——埃里克·利珀特有一个关于不同技术的精彩博客系列(第1部分,第2部分)——但在你的例子中,这很简单。
1 2 3 4 5 6 7 8 9 10 11 | public void CreatePosition(decimal latitude, decimal longitude) { Positions.Add(new Position(latitude, longitude)) for (decimal currentLatitude = latitude + LatitudeDeviation; currentLatitude <= NorthLimit; currentLatitude += LatitudeDeviation) { Positions.Add(new Position(currentLatitude , longitude)); } } |