int number = 1;
int maxnumber = 10000;
void LoadFavorites()
{
if (number <= maxnumber)
{
if (Properties.Settings.Default.FavoriteList.Contains("'"+number+"'"))
{
this.listBox1.Items.Add(number);
}
}
// Increases number by 1 and reruns
number = number + 1;
LoadFavorites(); //**MOVE THESE:
}
Изменить на
int number = 1;
int maxnumber = 10000;
void LoadFavorites()
{
if (number <= maxnumber)
{
if (Properties.Settings.Default.FavoriteList.Contains("'"+number+"'"))
{
this.listBox1.Items.Add(number);
// Increases number by 1 and reruns
number = number + 1;
LoadFavorites(); // problem is probably here
}
}
}
Вы вызываете функцию изнутри функции, которая, как вы, вероятно, знаете, является рекурсией. Однако при использовании рекурсии у вас должно быть условие выхода, которое приводит к выходу из цикла.
Стек - это порядок вызовов функций в потоке. Например, в Java у вас есть main (), которая является вашей точкой входа. Вызов функций из main () добавляет к вершине стека. Как только стек достигнет определенного размера, ваш компьютер больше не сможет буферизовать больше вызовов функций. Он просто удаляет основную функцию из стека и не знает, куда вернуться, поэтому выдает ошибку. (Он выдает ошибку, когда «main» отбрасывается, а не пытается вернуться).
Причина изменения заключается в том, что вы хотите продолжить, только если число