Вычисление квадратного корня n число раз
Разбираясь с циклами возник вопрос вычисление корня n число раз. Выглядеть это должно так:
Требуется реализовать именно циклом, без рекурсии.
Ответы (1 шт):
Автор решения: A K
→ Ссылка
Итеративно, без стека -- просто один цикл:
public double Sqrtn(double num, int count)
{
double result = Math.Sqrt(num);
for (int i = 0; i < count; i++)
{
result += num;
result = Math.Sqrt(result);
}
return result;
}
Вычисление начинаем "изнутри" формулы и проводим нужное число раундов, выходя "наружу".
Первые несколько итераций для двойки
for (int i = 1; i < 10; i++)
{
Sqrtn(2, i).Dump();
}
дадут такие ответы:
1,8477590650225735
1,9615705608064609
1,9903694533443939
1,9975909124103448
1,9993976373924085
1,999849403678289
1,9999623505652022
1,9999905876191524
1,9999976469034038
На 27мой итерации выдаёт ответ 2 - это отражение того математического факта, что ваша формула стремится к тому числу, которое стоит под корнем.
Рекурсивная версия:
public double Sqrtn(double num, int count)
{
double result = num;
if(count <= 1)
return Math.Sqrt(result);
return Math.Sqrt(result + Sqrtn(result, count - 1));
}
Первые ответы те же:
1,4142135623730951
1,8477590650225735
1,9615705608064609
1,9903694533443939
1,9975909124103448
1,9993976373924085
1,999849403678289
1,9999623505652022
1,9999905876191524
