Давай уточним: надо использовать
рекурентное соотношение или
рекурсию в программе?
И ещё одно уточнение. Когда программа должна заканчивать работу: когда
|y(n)-y0| < e или
|y(n)-y(n-1)| < e? Вычисления, которые я провел, показывают, что первое условие не достигается никогда.
Вот код, который написан для случая:
1) Используется рекурентное соотношение. Рекурсия в программе не используется
2) Программа останавливается при выполнении условия |y(n)-y(n-1)| < e
#include <math.h>
#include <iostream>
using namespace std;
double f(double x, double y_prev)
{
return cos(y_prev) * cos(y_prev) / (x + y_prev);
}
int main()
{
double x = 3.4;
double y0 = 0.7;
double eps = 1e-5;
double y_curr = y0;
double y_prev;
do
{
y_prev = y_curr;
y_curr = f(x, y_prev);
} while (fabs(y_curr - y_prev) > eps);
cout << "y = " << y_curr << endl;
return 0;
}
Ответ, который выдает программа: y = 2.5599