Решение уравнения 0.7х = 2 с использованием рекурсии - C (СИ)
Формулировка задачи:
Здравствуйте! Возникла такая вот проблемка: как решить уравнение 0.7х = 2 с помощью рекурсии.
Вот код, который не работает верно:
Поможете исправить?
#include <stdio.h>
double recursiya(double x){
double rez;
rez=0.3*x+2.0;
if (rez<(20./7))
rez=recursiya(rez);
else
return rez;
}
int main(){
double koren;
koren=recursiya(1.0);
printf("%lf ",koren);
return 0;
}Решение задачи: «Решение уравнения 0.7х = 2 с использованием рекурсии»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
int near_equal (double x, double y, double eps) {
return x - y < eps && y - x < eps;
}
/* описание функции root:
* x - число, корень которого необходимо вычислить
* y - начальное число иетрации
* eps - точность
* */
double root (double x, double y, double eps) {
y = 0.5 * (y + x / y);
if (near_equal (x, y * y, eps) )
return y;
else
return root (x, y, eps);
}
int main () {
printf ("%lf\n", root(2., 1., 0.000001));
return 0;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Определяем функцию near_equal для проверки условия близости чисел с заданной точностью
- Определяем функцию root для вычисления корня уравнения с использованием метода Ньютона
- В функции main вызываем функцию root с заданными аргументами и выводим результат на экран
- Функция root осуществляет рекурсивный вызов до тех пор, пока не будет выполнено условие остановки (near_equal)