【发布时间】:2016-01-12 00:36:35
【问题描述】:
此错误有时仅在我调用其中一个参数是数字的递归函数时出现:rand()%10。就像下面的代码一样:
private: System::Void AIrandomMove(int randomMove,String ^s)
{
if (randomMove == 1)
{
if ( Move(1) ) // move number 1 had already been done
AIrandomMove(rand()%10,s); // here it appears the System.StackOverflowException
else
//do move number 1
}
//same goes for ==2 || ==3 || ... || ==10
}
我该如何处理?
【问题讨论】:
-
只是不要依赖递归代码,因为它没有任何意义。将算法转换为迭代算法。
-
为什么没有意义?实现如下: else //实现 }`
-
这没有意义,因为您明确允许非终止行为。使用递归有什么意义?我的意思是你为什么需要递归?
-
@RazvanNica 请edit您的帖子包含所有相关细节,并避免将这些细节放在 cmets 中。
-
那是因为递归算法的终止取决于随机值提取,正如我在第一条评论中指出的那样,所以你基本上有一些代码可能会或可能不会根据你的幸运程度而终止,这不是一个合适的设计。
标签: random stack c++-cli overflow system