Поиск суммы первых R-отрицательных элементов. Рекурсивные функции

Страницы работы

2 страницы (Word-файл)

Содержание работы

cout<<”Сумма отрицат элементов S=”<<S;
return(0);
}

№3

Найти сумму первых R-отрицат элементов (R=3).
Для решения этой задачи введем дополнительную переменную l, в этой переменной будет храниться уже подсчитанное количество отрицательных элементов. В цикле, как только встретится «-»элемент мы должны его добавить в сумму и увеличить на 1 значение l.

Как только значение l совпадет со значением k это будет означать, что дальше суммировать элементы не нужно и можно заканчивать выполнение цикла.

int main()
{
               const int n=10;
               int a[n]={…};
               int S=0;

               for (int i=0; i<n;i++)
                              if(l<n)//если еще не нашли k-элементов
                              if(a[i]<0){S+=a[i];++l}

               return(0);
}

Иначе, если k; else break…..
for (i=0; i<n; l<k; i++)
{             if(a[i]<0)
               {             S+=a[i];
                              ++l;}

}

Для поиска мин. элемета введ. дополн. переменную, назовем mini. В эту переменную запишем значение 1-го элемента массива. После этого в цикле будем перебирать все значения элемента массива и сравнивать с mini.

Рекурсии

Рекурсивные функции называется вызов функции в теле  самой этой же функции.
n!=1*2*3*…*(n-1)*n

n!=

Или

 n!=

long int factor (int n)
{           If(n=0)
            return 1;
            else return factor(n-1);
}

void main()
{           cout<<factor(3); }

Достоинства рекурсивных функций:

·  Простая и комплексная реализация для некоторых алгоритмов

·  При вызовах рекурс. функий многократно выделяетсяв памяти под хранение локальных данных

·  Каждый вызов функции требует определенных временных затрат.

Если решить одну и туже задачу можно использую рекурсию и не используя рекурсию, то лучше не использовать, а пользоваться циклом.

long int factor (int n)
{           long int f=1;
            for(int i=1; i<=n; ++i)
                        f*=I;
            return f;
}

Похожие материалы

Информация о работе