Чтобы написать рекурсивную функцию для полинома Чебышева в C++, используется рекурсивная формула, определенная для полиномов Чебышева первого и второго рода.
Для начала определим полиномы Чебышева первого и второго рода:
- Полиномы Чебышева первого рода обозначаются T_n(x) и определяются следующим образом:
T_0(x) = 1
T_1(x) = x
T_n(x) = 2x * T_{n-1}(x) - T_{n-2}(x)
- Полиномы Чебышева второго рода обозначаются U_n(x) и определяются следующим образом:
U_0(x) = 1
U_1(x) = 2x
U_n(x) = 2x * U_{n-1}(x) - U_{n-2}(x)
Теперь, реализуем рекурсивную функцию для полинома Чебышева первого рода:
#include <iostream> using namespace std; int chebyshev_t(int n, int x) { // базовый случай if (n == 0) { return 1; } else if (n == 1) { return x; } // рекурсивный случай else { return 2 * x * chebyshev_t(n-1, x) - chebyshev_t(n-2, x); } } int main() { int n, x; cout << "Введите значение n: "; cin >> n; cout << "Введите значение x: "; cin >> x; int result = chebyshev_t(n, x); cout << "Значение полинома Чебышева T_" << n << "(" << x << ") = " << result << endl; return 0; }
Подобным образом можно реализовать рекурсивную функцию для полинома Чебышева второго рода, заменив T на U в определении функции и в выводе сообщения:
int chebyshev_u(int n, int x) { // базовый случай if (n == 0) { return 1; } else if (n == 1) { return 2 * x; } // рекурсивный случай else { return 2 * x * chebyshev_u(n-1, x) - chebyshev_u(n-2, x); } } int main() { int n, x; cout << "Введите значение n: "; cin >> n; cout << "Введите значение x: "; cin >> x; int result = chebyshev_u(n, x); cout << "Значение полинома Чебышева U_" << n << "(" << x << ") = " << result << endl; return 0; }
В вышеприведенном примере пользователь будет запрашиваться ввести значение n и x, а затем вычисляется соответствующее значение полинома Чебышева.