Дай розгорнуту відповідь:
Навіщо алгоритмам проводити оцінку складності?
Відповідь:
Створення та реалізація алгоритму відповідно до свого призначення визначає його складність. Проте не існує інтегрованого показника складності алгоритму, хоча існує спеціальний навіть розділ – метрична теорія алгоритмів, що займається саме проблемами складності. Інтуїтивно можна виділити такі основні складові складності алгоритму:
1. Логічна складність - кількість людино-місяців, витрачених на створення алгоритму.
2. Статична складність - довжина опису алгоритмів (кількість операторів).
3. Тимчасова складність - час виконання алгоритму.
4. Ємнісна складність - кількість умовних одиниць пам'яті, необхідних для роботи алгоритму.
Головною метою теорії складності є забезпечення механізму класифікації алгоритмів за складністю. Складність алгоритму дозволяє визначитися з вибором ефективного алгоритму серед існуючих, що побудовані для розв’язання конкретної проблеми. А саме вибір серед уже існуючих алгоритмів дозволяє не розглядати логічну та статичну складність, а оцінювати ті ресурси, що знадобляться під час реалізації обраних алгоритмів.
Пояснення:
Начальное число — 5
Выполняем команды:
Первая команда — 5 + 1 = 6. Потом у нас идут три двойки. Это значит, что мы три раза подставляем какое-то число b к концу текущего (к концу 6). Т.к. в результате мы видим, что после шести у нас стоит две пятерки, это значит, что к шести доставили две пятерки. Третья команда — 2, но после нее идет единица, что говорит о том, что сначала в конец поставляется число b и потом все число увеличивается на единицу. Смотрим: в конце полученного числа стоит шесть. Если убрать единицу, то будет пять, что говорит о том, что число b равно пяти.
ответ: b = 5
Объяснение:
#include <iostream>
using namespace std;
long double fact(int N)
{
if(N < 0) // если пользователь ввел отрицательное число
return 0; // возвращаем ноль
if (N == 0) // если пользователь ввел ноль,
return 1; // возвращаем факториал от нуля - не удивляетесь, но это 1 =)
else // Во всех остальных случаях
return N * fact(N - 1); // делаем рекурсию.
}
int main()
{
int N;
setlocale(0,""); // Включаем кириллицу
cout << "Введите число для вычисления факториала: ";
cin >> N;
cout << "Факториал для числа " << N << " = " << fact(N) << endl << endl; // fact(N) - функция для вычисления факториала.
return 0;
}