Страница 1 из 1

Сумма n члегов арифметическоё прогрессии с помощью рекурсии!

Добавлено: 25 июн 2009, 11:31
bars1990
Даны: первый член и разность арифметической прогрессии. Нужно вычислить сумму первых n членов этой прогрессии?
Используя рекурсивную функцию.

P.S. Желательно в среде Microsoft Visual Studio.

Заранее благодарен.

Re: Сумма n члегов арифметическоё прогрессии с помощью рекурсии!

Добавлено: 25 июн 2009, 11:56
Romeo
Я не знаю, как сделать через рекурсию. Хотя, если извратиться, то наверное можно, но я не понимаю смысла, ведь для вычисления суммы есть готовая формула.

Sn = n * (a1 + an) / 2;

Если учесть, что у нас есть следующие соотношения:

a1 - первый член
d - разность прогрессии
an = a1 + (n-1)*d

То формула для суммы арифметической прогресии превращается в:

Sn = n * (2*a1 + (n-1)*d) / 2 = n*a1 + n*(n-1)*d/2

Программа на Паскале кто может переведите на Си

Добавлено: 26 июн 2009, 15:19
bars1990
Способа за уделённое внимание.
Я нашел программу по теме, но она на Паскале.
Прошу перегнать её в Си или С++.
uses crt;
procedure pr(var a:integer;p:integer;n:integer;var sum:integer);
begin
if n = 1 then sum:=a
else
begin
pr(a,p,n-1,sum);
a:=a+p;
sum:=sum+a;
end;
end;

var s,a,p:integer;
n:integer;
begin
clrscr;
write('Vvedite A0 : ');readln(a);
write('Vvedite p : ');readln(p);
write('Vvedite n : ');readln(n);
pr(a,p,n,s);
writeln('Sum = ',s);
readln
end.

P.S. Желательно в среде Microsoft Visual Studio.

Заранее благодарен.

Re: Сумма n члегов арифметическоё прогрессии с помощью рекурсии!

Добавлено: 26 июн 2009, 17:07
Albor
Держи!
CPP Код:
[LEFT]#include <iostream.h>
int pr(int n, int arg, int ras)
{
if(n==1) return arg;
return arg+(n-1)*ras+pr(n-1,arg,ras);
}
void main()
{
cout<<pr(6,1,2);//пример
}
[/LEFT]

Re: Программа на Паскале кто может переведите на Си

Добавлено: 26 июн 2009, 17:19
bars1990
Спосибо работает отлично :D
Слушай, а можно реализовать ввод всех параметров с клавы???

Re: Программа на Паскале кто может переведите на Си

Добавлено: 26 июн 2009, 17:34
Albor
bars1990 писал(а):Спосибо работает отлично :D
Слушай, а можно реализовать ввод всех параметров с клавы???
Это просто, напиши сам. конструкция cout<<данные1<<данные2<< и т.д.; выводит на экран, а cin>>имя_переменной; - вводит данные.

Re: Программа на Паскале кто может переведите на Си

Добавлено: 26 июн 2009, 17:38
bars1990
Я проделал всё это. Работает!!!
Огромное спасибо!!!