Форум программистов, компьютерный форум CyberForum.ru

Факториал - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Определение колличества членов ak псоледовательности http://www.cyberforum.ru/cpp-beginners/thread168254.html
Помогите пожалуйста подправить программу. Нужно Определить количество членов ak последовательности а1,....,аn, являющихся нечетными числами. #include <iostream> #include <conio.h> int S=0; int n; int main() { std::cout <<"vvedite n"; std::cin >>n; int a;
C++ Описать класс "Матрица" я как бэ в поиске нашел но мне бы хотелось узнать обязательно ли матрица должна быть динамической и можно написать метод для ввода и вывода матрицы? а то я пытался сделать но чего-то работает неверно... http://www.cyberforum.ru/cpp-beginners/thread168246.html
C++ Перемножение двух чисел
Никак не могу понять в чем ошибка в таком простом коде #pragma argsused #include <iostream.h> #include <conio.h> #include <math.h> #include <stdio.h> #include <clx.h> #pragma hdrstop
Поиск неориентированного графа C++
Здравствуйте, мне надо бы очень срочно решить данную задачу: Даны степени вершин неориентированного графа. Гарантировано, что число ребер в графе не превышает 500 000. Граф не содержит циклов и петель Формат входных данных Первая строка содержит число N-количество вершин в графе (1<=N<=10 000). N чисел? записанных в следующей строке d (1<=d<=10 000) описывают степени i-той вершины графа....
C++ "Сжатие" массива http://www.cyberforum.ru/cpp-beginners/thread168213.html
Натолкнулся на проблему, помогите, пожалуйста разобраться. Допустим у нас есть массив из 100 элементов. Чтобы "сжать" его в массив из 50 элементов, достаточно брать среднее арифм. каждых двух подряд идущих чисел и записывать в новый массив. А как поступить, если нужно массив из 100 "сжать" в массив, например, из 70 элементов? (например из 10 20 30 получить 13.66 и 26.33)
C++ Нахождение минимального и максимального элементов матрицы дано целочисленная матрица n x m определить: 1. MAX элемент в первом столбце и MIN элемент в последнем столбце. 2 MAX элемент во второй строке и MIN элемент в предпоследней строке и указать их место нахождения подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
02.10.2010, 06:33     Факториал
MarchZM, рекуррентная формула, с примерами, все ясно расписано

Цитата Сообщение от MarchZM Посмотреть сообщение
в общем, она мне сказала что эта прога решается через рекуррентность
я думаю, здесь она имела в виду, что для вычисления факториала числа n не нужно перемножать все натуральные числа от 1 до n, а использовать вычисленное на предыдущем шаге значение (n - 2)!, таким образом, n! = n * (n - 1) * (n - 2)!.
Посмотри внимательно, у тебя сначала вычисляется 1!, потом 3!, потом 5! и т.д. Можно считать знаменатели так:
Код
1! = 1
3! = 1 * 2 * 3
5! = 1 * 2 * 3 * 4 * 5
.............................
(2n + 1)! = 1 * 2 * 3 * ... * 2n * (2n + 1)
А можно просто сохранять предыдущий знаменатель и на его основе вычислять новый (кстати, то же самое хорошо бы сделать и с вычислением числителя). Алгоритм:
C++
1
2
3
4
5
6
7
8
9
10
int last_denom = 1;
int i = 1;
for(int j = 1; j <= k; i = j, j+=2)
{
    int denom = last_denom;
    for(int t = i + 1; t <= j; ++t)
        denom *= t;
    //...
    last_denom = denom;
}
Сравни, какой из вариантов эффективнее, и поймешь, почему преподаватель требует от тебя именно "через рекуррентность". Так что выносить вычисление факториала в отдельную процедуру нет смысла.
PS. Все тему не читал, так что извиняюсь, если повторил чей-то пост
 
Текущее время: 23:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru