Посчитать квадратный корень из числа без использования Math - C#

Узнай цену своей работы

Формулировка задачи:

Привет всем... Я в общем студент... И на первом занятии нам учитель задал задачку... она адресовалась к тем, кто уже знает си шарп.. я к таким не пренадлежал... но задачку запомнил.. и частенько ломаю себе голову... Короч, тема такая.... Нужно добыть квадратный корень с числа.. Но при этом Math - библиотеку вообще не использовать... Всё нужно сделать циклами, условиями плюсами минусами и прочим... У кого какие мыслишки будут по этому поводу?

Решение задачи: «Посчитать квадратный корень из числа без использования Math»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Task1.Root
{
    public static class Mathematics //(Including a root of negative numbers)
    {
        //With using recursion (alg. Newton). Every step we have lowering the power.
        public static double Root(double number, int rank = 2, double precision = 0.001)
        {
            int sign = GetSign(ref number, rank);
           
            double previousX = 1;
            double presentX;
            double tempPrecision = precision;
 
            if (rank == 1)
                return number*sign;
            do
            {
                presentX = ((rank - 1) * previousX + number / Root(previousX, rank - 1, precision)) / rank;
                tempPrecision = presentX - previousX;
                previousX = presentX;
            } while (Math.Abs(tempPrecision) > precision); // только тут вместо модуля бахните проверку на то, что больше.
                                                                             // А то самого ломает)) Можно так же вместо заданной точности брать до
                                                                             // double.Epsilon т.е. будет идентично... если стек не переполнится...))
 
            return Root(presentX, rank - 1, precision) * sign;
        }
 
        /// <summary>
        /// Find out the sign of number and changers negative to positive
        /// </summary>
        /// <param name="num">number</param>
        /// <param name="rank">power of radical</param>
        /// <returns>sign</returns>
        private static int GetSign(ref double num, int rank)
        {
            if (num < 0 && rank % 2 == 1)
            {
                num *= -1;
                return -1;
            }
            else
                return 1;
        }
    }
}

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


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

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

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