Метод Лагерра. BasicQ и C#

Я прошу помощи.

10 PRINT 'ВЫЧИСЛЕНИЕ МНОГОЧЛЕНА ЛАГЕРРА'
20 INPUT 'ВВЕДИТЕ N>=2 N='N
30 INPUT 'ВВЕДИТЕ X='X : LET A=1 : LET B=1-X
40 FOR I=1 TO N-1
50 LET L=((2*I+1-X)*B-I*A)/(I+1)
60 LET A=B : LET B=L : NEXT I
70 PRINT 'LN(X)='L : GOTO 30 : END

Это код, который решает ортогональный многочлен с помощью метода Лагерра. Я неопытный студент, который делает программу на C# с использованием WinForm, которая будет решать ортогональные многочлены. Вот моя попытка "перевести" этот фрагмент кода с бейсика на нужный мне шарп

private void button4_Click(object sender, EventArgs e) // Lagger's methode
{
    double N = Convert.ToInt32(textBoxN.Text);
    if (N < 2)
    {
        textBoxRes.Text = ("Неверно указан N!");
    }
    double X = Convert.ToInt32(textBoxX);
    double L = 1, I = 1, A = 1, B = 1;
    for (I = 1, N = -1f; ;)
    {
        L = ((2 * I + 1 - X) * B - I * A) / (I + 1);
        A = B; B = L;
    }
    textBoxRes.Text=Convert.ToString(L);
}

Моя проблема в том, что я не могу разобраться, как правильно интерпретировать FOR I=1 TO N-1 бейсика в человеческий цикл на C#. Пока что все работает так, что переменные в равенствах между собой перемешиваются, из-за чего X, введенный пользователем, становится в ответ, а расчеты даже не доходят до последней строки кода. Я привык к тому, что меня ругают на SO, каждый раз стараюсь сделать обращение лучше, но помощи я тут так и не дождался.


Ответы (1 шт):

Автор решения: aepot

Пользуйтесь документацией - Цикл "for".

private void button4_Click(object sender, EventArgs e) // Lagger's methode
{
    if (int.TryParse(textBoxN.Text, out int n) && n >= 2)
    {
        double x = double.Parse(textBoxX);
        double l = 1,
            a = 1,
            b = 1 - x;
        for (int i = 1; i < n; i++)
        {
            l = ((2 * i + 1 - x) * b - i * a) / (i + 1);
            a = b;
            b = l;
        }
        textBoxRes.Text = l.ToString("F3");
    }
    else
        textBoxRes.Text = "Неверно указан N!";
}
→ Ссылка