Нужно написать программу которая реализует три алгоритма:
1) Посчитаeт формулу напрямую с помощью цикла
2) С помощью рекурсии
3) С помощью рекурсии, и с условием, что когда будем считать Аn, воспользуемся Аn-1
Формула на фото

#include <iostream>
#include <iomanip>
using namespace std;
double fn1(int n) {
static const auto x = 2.0 / 3.0;
auto sum = 0.0;
for (auto i = 1; i <= n; ++i) sum += 1.0 / i + pow(x, i);
return sum;
}
double fn2(int n, double sum = 0.0) {
static const auto x = 2.0 / 3.0;
static int i = 0;
if (++i > n) {
i = 0;
return sum;
}
sum += 1.0 / i + pow(x, i);
return fn2(n, sum);
}
double fn3(int n) {
static const auto x = 2.0 / 3.0;
return (n <= 0) ? 0 : 1.0 / n + pow(x, n) + fn3(n - 1);
}
int main() {
cout << "n: ";
int n;
cin >> n;
auto y1 = fn1(n);
cout.setf(ios::fixed);
cout.precision(15);
cout << "1) " << y1 << '\n';
auto y2 = fn2(n);
cout << "2) " << y2 << '\n';
auto y3 = fn3(n);
cout << "3) " << y3 << '\n';
system("pause > nul");
}
1.
double sum = 0;
for (i=0;i<n;i++) sum += 1.f/i*exp(i*log(2.0/3.0));
cout << sum;
2
double fn(int i, int j,double sum)
{
;;sum += 1.0/i*exp(i*log(2.0/3.0));
;;if(i+1 == j) return sum;
;;return fn(i+1,j,sum);
}
cout << fn(0,n,0.0);
3.
double fn(int i)
{
;;if(i) return 1.0/i*exp(i*log(2.0/3.0)) + fn(i-1);
}
cout << fn(n);