
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.14.82] |
![]() |
|
Сообщ.
#1
,
|
|
|
Даны первый член и разность арифметической прогрессии. Написать рекур-
сивную функцию для нахождения:б) суммы n первых членов прогрессии. |
Сообщ.
#2
,
|
|
|
Как-то так:
![]() ![]() double summa( double a0, double delta, int n) { return n ? summa(a0,delta,n-1) + delta : a0; } |
Сообщ.
#3
,
|
|
|
Цитата Славян @ это и весь код? |
Сообщ.
#4
,
|
|
|
Да, достаточно и этого. Функция ж написана!
![]() |
Сообщ.
#5
,
|
|
|
[quote=Славян,1527171157,3770146][/quote
спасибо, а пояснения к ней можно? |
Сообщ.
#6
,
|
|
|
Можно!
1.Вначале срабатывает тернарная функция ?:. Она принимает первый аргумент n и смотрит на неравенство его нулю. 2.При верности (не равно нулю) вызывается рекурсивно сама функция summa, коя возвращает всю длинную сумму прогрессии, и добавка идёт шага +delta. 3.Если же n равно нулю, то как бы нет никакой прогрессии/шага, поэтому та тернарная вернёт третий аргумент, т.е. число a0 - первый шаг последовательности. |
Сообщ.
#7
,
|
|
|
Цитата Славян @ double summa( double a0, double delta, int n) { return n ? summa(a0,delta,n-1) + delta : a0; } ну это же не работает |
Сообщ.
#8
,
|
|
|
Да, там поправить надо (искала n-й член прогрессии):
![]() ![]() double summa( double a0, double delta, int n){ return --n>0 ? summa(a0,delta,n) + (a0 + delta*n) : a0;} ![]() |