Как зациклить алгоритм нахождения квадратного корня - C#
Формулировка задачи:
пишу метод нахождения квадратного корня, всё вроде работает, алгоритм верный, НО не могу зациклить его, нужна помощь или дельный совет
public int Sqrt(long x) { long b = 0; long a = x; List<int> num = new List<int>(); for (int i = 0; i <= x; i++) { b = a % 100; if (b == 0) break; num.Add((int)b); a /= 100; } List<int> otv = new List<int>(); for (int j = 1; j <= 9; j++) { if (Quadro(j, 2) == num[num.Count - 1]) { otv.Add(j); break; } if (Quadro(j, 2) > num[num.Count - 1]) { otv.Add(j - 1); break; } } //с этого момента не могу зациклиться num[num.Count - 2] = num[num.Count - 2] + ((num[num.Count - 1] - (otv[0] * otv[0])) * 100); for (int k = 1; k <= 9; k++) { if (((((otv[0] * 2) * 10) + k) * k) == num[num.Count - 2]) { otv.Add(k); break; } if (((((otv[0] * 2) * 10) + k) * k) >= num[num.Count - 2]) { otv.Add(k - 1); break; } } return (int)x; }
Решение задачи: «Как зациклить алгоритм нахождения квадратного корня»
textual
Листинг программы
/// <summary> /// Нахождение корня n-ой степени методом Ньютона /// </summary> /// <param name="A">Число, из которого требуется вычислить корень</param> /// <param name="n">Степень корня</param> /// <param name="eps">Точность вычислений</param> /// <returns>Значение корня</returns> public static double SqrtN(double A, int n, double eps) { double x1 = 0, x2 = 2; do { x1 = x2; x2 = (x1 * (n - 1) + A / Math.Pow(x1, n - 1)) / n; } while (Math.Abs(x1 - x2) > eps); return x2; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д