Реализовать рекурсивную функцию, находящую приближенное значение корня k-й степени - C (СИ)
Формулировка задачи:
Реализовать рекурсивную функцию, находящую приближенное значение
корня k-й степени из числа x по формуле: y(0) = 1, y(n+1)=y(n)-[y(n) - x /
y(n)^(k-1) ]/k, (x - вещественный параметр, k и n - целые; x > 0, k > 1, n > 0).
Вот реализация на Паскале
Помогите сделать на Си.
function SqrtK(var x:real; k,n:integer):real;
var q:real;
begin
if x>0 then
if n=0 then result:=x
else begin
//q:=SqrtK(x,k,n-1);
result:= SqrtK(x,k,n-1)-(SqrtK(x,k,n-1)-x/SqrtK(x,k,n-1)/(k-1))/k;
end;
end;Решение задачи: «Реализовать рекурсивную функцию, находящую приближенное значение корня k-й степени»
textual
Листинг программы
double SqrtK(double x, int k, int n)
{
if(x>0)
{
if(n==0)
return x;
return SqrtK(x,k,n-1)-(SqrtK(x,k,n-1)-x/SqrtK(x,k,n-1)/(k-1))/k;
}
}
Объяснение кода листинга программы
- Рекурсивная функция SqrtK() принимает три аргумента: x, k, n.
- Если x больше нуля, то выполняется блок кода внутри первого if.
- Если n равно нулю, то возвращается значение x.
- Если n не равно нулю, то возвращается результат вызова функции SqrtK(), деленный на k-1, минус x, деленное на результат вызова функции SqrtK(), деленный на k-1.
- Если x меньше или равно нулю, то выполняется блок кода внутри первого if.
- Результатом работы функции SqrtK() будет приближенное значение корня k-й степени из x.