На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела
1. Не создавайте несколько одинаковых тем, ибо модератор может расценить их, как спам и удалить все.
2. Для решения задач по GPSS есть отдельная тема. Все задачи по GPSS опубликовывать в этой теме! Перед опубликовыванием вашей задачи просмотрите всю тему, возможно вы сразу найдете решение.
3. Давайте вашим темам ОСМЫСЛЕННЫЕ названия, а также указывайте язык программирования. Пример: [Pascal]:Работа с файлами и записями.
4. Использования тега CODE обязательно при публикации текста программы.

Темы, оформленные с явным игнорированием правил и отсутствием смысла, будут закрыты/удалены!
Вам помогли? Напишите об этом здесь (в портфолио фрилансера)

Фрилансерам:
5. Демпинг цен запрещен (даже если Вы готовы работать бесплатно). Цены обсуждаются в приватном общении. Если вы готовы рещить задачу бесплатно, просто решите ее быстрее, чем возникнет предложение сделать это за деньги.
6. Пользователям, входящим в группу Newbie, запрещается предлагать свои услуги (завуалированно в т.ч.)
7. В посте с предложением выполнить работу, обязательно указывать ссылку на свое портфолио в Отзывы, Благодарности, Портфолио Это правило работает и в том случае, если вы выполняете работу бесплатно.
8. Реклама (даже завуалированная) своих фриланских сайтов запрещена

Нарушение данных пунктов влечет до RO или БАНА (при неоднократом)
Модераторы: ttiger, mikefreelance, Rust
  
    > помогите пожалуйста написать на языке си
      Даны первый член и разность арифметической прогрессии. Написать рекур-
      сивную функцию для нахождения:б) суммы n первых членов прогрессии.
        Как-то так:
        ExpandedWrap disabled
          double summa( double a0, double delta, int n) { return n ? summa(a0,delta,n-1) + delta : a0; }
          Цитата Славян @

          это и весь код?
            Да, достаточно и этого. Функция ж написана! ;)
              [quote=Славян,1527171157,3770146][/quote
              спасибо, а пояснения к ней можно?
                Можно!
                1.Вначале срабатывает тернарная функция ?:. Она принимает первый аргумент n и смотрит на неравенство его нулю.
                2.При верности (не равно нулю) вызывается рекурсивно сама функция summa, коя возвращает всю длинную сумму прогрессии, и добавка идёт шага +delta.
                3.Если же n равно нулю, то как бы нет никакой прогрессии/шага, поэтому та тернарная вернёт третий аргумент, т.е. число a0 - первый шаг последовательности.
                  Цитата Славян @

                  double summa( double a0, double delta, int n) { return n ? summa(a0,delta,n-1) + delta : a0; }

                  ну это же не работает
                    Да, там поправить надо (искала n-й член прогрессии):
                    ExpandedWrap disabled
                      double summa( double a0, double delta, int n){  return --n>0 ? summa(a0,delta,n) + (a0 + delta*n) : a0;}
                    :blush:
                    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                    0 пользователей:


                    Рейтинг@Mail.ru
                    [ Script execution time: 0,0268 ]   [ 15 queries used ]   [ Generated: 28.03.24, 11:00 GMT ]