一个简单的递归回溯小算法,原理和四皇后那个命题解法差不多
开始一个递归方法如果遇到特定条件则进行某些事,直到满足了指定条件,结束递归方法
条件需要在三把控否则容易进入无限递归卡死
List<int> _NumberRandom;
void NumberRandom(int prevNum)
{
if (_NumberRandom.Count >= 5)
{
Debug.LogWarning("递归回溯结束");
return;
}
else if (10 - prevNum <= 5 - _NumberRandom.Count)
{
Debug.LogWarning("当前随机值无法进行下去,去除末尾继续递归");
_NumberRandom.RemoveAt(_NumberRandom.Count - 1);
NumberRandom(_NumberRandom[_NumberRandom.Count - 1]);
}
else
{
int tempNumber = prevNum + Random.Range(1, 4);
Debug.LogWarning("正常随机,随机值:" + tempNumber);
_NumberRandom.Add(tempNumber);
if (tempNumber >= 10)
{
Debug.LogWarning("当前随机值已经超出最大范围,去掉末尾继续递归");
_NumberRandom.RemoveAt(_NumberRandom.Count - 1);
NumberRandom(_NumberRandom[_NumberRandom.Count - 1]);
}
else
{
NumberRandom(_NumberRandom[_NumberRandom.Count - 1]);
}
}
}
这一段的作用是为了获取小于10(也可以改成作为参数传)且大于prevNum的5个顺序的不重复随机
且每下一个数字是上一个数字的加1~3(随机)