Вычисления при заданном значении х и n с использованием циклической и рекурсивной функции - C (СИ)
Формулировка задачи:
Составить программы вычисления при заданном значении х и n с использованием циклической и рекурсивной функции.
нашла закономерность у числителя 1*1 1*2 2*2 2*3 3*3 3*4 4*4 ...
формула для числителя :
и где круглые скобки означают квадратные скобки в математике, то есть Операция взятия целой части числа
цепная дробь тут
Решение задачи: «Вычисления при заданном значении х и n с использованием циклической и рекурсивной функции»
textual
Листинг программы
#include <stdio.h>
double rec_func(double x, int counter, int n)
{
if (counter > n) {
return 1;
}
else {
return (x + 2 * counter / rec_func(x, counter + 1, n));
}
}
double loop_func(double x, int n)
{
int i;
double b = 1.0;
for (i = n; i > 0; i--) {
b = x + 2.0 * i / b;
}
return b;
}
int main(int argc, char *argv[])
{
double x = 1.0;
int n = 8;
int counter = 1;
double divider = rec_func(x, counter, n);
double result = 1 / divider;
printf("%Ef\n", result);
divider = loop_func(x, n);
result = 1 / divider;
printf("%Ef\n", result);
return 0;
}
Объяснение кода листинга программы
- Включаем файл стандартного ввода/вывода
- Определяем две функции: rec_func и loop_func
- В функции rec_func происходит рекурсивное вычисление значения при заданных параметрах x, counter и n
- Если значение counter больше n, то возвращаем 1
- В противном случае, возвращаем результат вычисления (x + 2 * counter / rec_func(x, counter + 1, n))
- В функции loop_func происходит итеративное вычисление значения при заданных параметрах x и n
- Используем цикл for для перебора значений от n до 1 с шагом -1
- Внутри цикла обновляем значение b с помощью формулы (x + 2.0 * i / b)
- Возвращаем полученное значение b
- В функции main задаем значения x = 1.0 и n = 8
- Инициализируем переменные counter и divider со значениями 1 и 1.0 соответственно
- Вызываем функцию rec_func с параметрами x, counter и n, и сохраняем результат в переменную divider
- Вычисляем результат с помощью формулы 1 / divider и выводим его на экран с помощью функции printf
- Вызываем функцию loop_func с параметрами x и n, и сохраняем результат в переменную divider
- Вычисляем результат с помощью формулы 1 / divider и выводим его на экран с помощью функции printf
- Возвращаем 0, чтобы указать, что программа успешно завершилась