Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Рекурсия


Автор: Чуччи 9.9.2011, 18:44
Составить программу вычисления суммы:
((x^1)/1!)- ((x^3)/3!)+ ((x^5)/5!)- ((x^7)/7!)+...-(-1)^n*((x^n)/n!)
При увеличении n эта сумма приближается к значению sin(x).
 помогите пожалуйста, 
есть вариант решения в паскале, но не понимаю как оно составлено
Код

uses crt;
var x,s,t:real;
    n,i:integer;
begin
clrscr;
write('x=');readln(x);
write('n=');readln(n);
s:=x;t:=1;
for i:=1 to n do
  begin
   t:=t*((-1)*x*x)/(2*i*(2*i+1));
   s:=s+t;
  end;
writeln('Приближенное значение  sinx=',s:10:8);
writeln('Аналитическое значение sinx=',sin(x):10:8);
readln
end.

Автор: udly 12.9.2011, 12:09
Не совсем понятно причем здесь рекурсия (ну не факториал же с помощью ее считать ;). http://csdeveloper.ru/rekursivnyj-obxod-uzlov-treeview-ili-u-popa-b.html). Видимо имелось ввиду рекуррентная функция. 

Мой вариант решения задачи:
Код

' вычисление суммы ряда
Public Function Fun(x As Double, n As Integer)
Dim s As Double
Dim p As Integer
Dim fact, xt As Double
s = x: fact = 1:
xt = x: p = -1
For i = 1 To n
    fact = fact * (2 * i) * (2 * i + 1)
    xt = xt * x ^ 2
    s = s + p * xt / fact
    p = -p
Next i
Fun = s
End Function

' проверка функции Sum(x,n)
Public Sub test()
    Dim pi As Double
    Dim x As Double
    Dim n As Integer
    pi = 4 * Atn(1)
    x = 30 * pi / 180 'перевод градусов в радианы
    n = 10
    MsgBox "Sin(x)=" & Sin(x) & "  Fun(x,n)=" & Fun(x, n), vbOKOnly, "Результат:"
End Sub



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)