Как зациклить алгоритм нахождения квадратного корня - 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;
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.5 из 5
Похожие ответы