Задача:
Составить 2 программы на языке Pascal (одну не используя оператор цикла), другую используя соответствующий оператор цикла. Сравнить полученное ЭВМ значение суммы ряда со значением, вычисленным аналитически. Найти сумму 50 членов ряда: S=2+2/2*3+2/2^2*5+2/2^3*7
Скажу огромное спасибо тому, кто хоть подскажет русло в котором думать надо!!!
кажется мне чтьо здесь что-то с рекурсиями связано, но уж очень сложно выходит как-то...
Точно, с рекурсиями! Не в бровь, а в глаз
Программу на Пачкале выкладывать не буду, чтобы не мешать творческому процессу. Но вот алгоритм на Васике. Работает, проверял.
''''''''''''''''''''''''''''''
Function F(k As Integer) As Double
If (k > 0) Then
F = F(k - 1) + 2 / (2 ^ k * (1 + 2 * k))
Else
F = 2
End If
End Function
Function Цикл(n As Integer) As Double
Dim k As Integer, S As Double
S = 0
For k = 0 To n
S = S + 2 / (2 ^ k * (1 + 2 * k))
Next k
Цикл = S
End Function
Sub Процедура1()
Dim S As Double
' Вычисление через рекурсивную функцию.
S = F(3)
' Вычисление через цикл.
S = Цикл(3)
End Sub
'''''''''''''''''''''''
Для контроля: S(3)=2.469.....
И ещё - в Пачкале нет возведения в степень, так что операцию 2^k придётся программировать самостоятельно
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)