Написать рекурсивную функцию для нахождения суммы для любого n, вводимого с клавиатуры - C (СИ)
Формулировка задачи:
S=1/(1+1^2)+1/(1+2^2)+1/(1+3^2)+...+1/(1+n^2).
Решение задачи: «Написать рекурсивную функцию для нахождения суммы для любого n, вводимого с клавиатуры»
textual
Листинг программы
#include <stdio.h>
double rec(int n)
{
if (n == 0)
return .0;
else
return 1./(1.+n*n)+rec(n-1);
}
int main()
{
int n;
printf("n= ");
scanf("%d", &n);
printf("%lf\n",rec(n));
return 0;
}
Объяснение кода листинга программы
- Подключение стандартной библиотеки
для работы с вводом/выводом - Рекурсивная функция double rec(int n) принимает целочисленный аргумент n
- Проверка условия n == 0, если оно выполняется, то возвращается .0
- В противном случае возвращается результат вычисления 1./(1.+n*n)+rec(n-1)
- В функции main() объявляется целочисленная переменная n типа int
- Выводится сообщение
n=и осуществляется ввод значения n с клавиатуры с помощью функции scanf() - Вызывается рекурсивная функция rec(n) и выводится результат с помощью функции printf()
- Возвращается 0, чтобы указать, что программа успешно завершилась