Консультация № 175024
08.12.2009, 14:53
35.00 руб.
0 6 2
Добрый день
тема:рекурсия и организация циклов в программе.
задание: найти сумму ряда с точностью E=10^(-4) , общий член которого An=(-1)^n-1/n^n
Желательно с паяснениями

Обсуждение

давно
Посетитель
7438
7205
08.12.2009, 15:16
общий
(-1)n-1/nn или ((-1)n-1)/nn ?
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
08.12.2009, 15:27
общий
первое (-1)n-1/nn (где n в степени n знаменатель)
давно
Посетитель
7438
7205
08.12.2009, 15:42
общий
Хм, а зачем тут рекурсия?
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
08.12.2009, 15:58
общий
такое задание надо просто через цикл написать ето.
давно
Посетитель
7438
7205
08.12.2009, 16:18
общий
это ответ
Здравствуйте, Roland Deschain.
Вот Вам программка с циклом do-while

Приложение:
//найти сумму ряда с точностью E=10^(-4) , общий член которого An=(-1)^n-1/n^n
#include <math.h> //для pow и fabs
#include <iostream.h> //для cout

int main()
{
double E = 1.e-4; //погрешность
double An; //очередной член
double sum = 0; //сумма
double n = 1; //номер члена 1,2,...
double one = 1.; //для очередного +1,-1,...

do
{
An = one/pow(n, n); //вычисляем (pow(n,n) = n в степени n)
one *= -1; //для следующей итерации
n++; //очередной номер
sum +=An; //накапливаем сумму
}while(fabs(An) >= E); //продолжаем, пока модуль очередного члена больше погрешности

cout << "sum = " << sum << endl; //выведем результат
}
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
08.12.2009, 16:26
общий
это ответ
Здравствуйте, Roland Deschain!
Вот програмка через реккурентную формулу



Приложение:
#include <stdio.h> /*Подключаем модуль стандартного ввода/вывода */
#include <math.h> /* Подключаем модуль математических функций (требуется для функции log) */

void main()
{
float summ,an;
int n;
summ=0; /*Начальная сумма равна 0 */
an=1; /*Первое слагаемое*/
n=1; /*номер текущего слагаемого */
while(an>=0.0001) /*Цикл "Пока точность не достигнута - выполнять" */
{
if (n%2==1) summ+=an; /*Если номер слагаемого нечетный, то прибавляем его к сумме */
else summ-=an; /*Если номер слагаемого четный, то вычитаем */
n++; /*Увеличиваем номер текущего слагаемого на 1 */
an*=exp((log(1.0/(n+1))+(n*(log((float)n/(n+1)))))); /*Считаем следующее слагаемое*/
}
printf("Summa %d elementov ravna = %f\n",n,summ); /*Выводим сумму на экран */
getchar();
}
Форма ответа