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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
go100gi
1 / 1 / 0
Регистрация: 31.07.2013
Сообщений: 31
Завершенные тесты: 1
#1

Нахождение факториала - C++

04.03.2014, 11:13. Просмотров 534. Ответов 7
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <iomanip>
#include <conio.h>
using namespace std;
 
unsigned long factroial(unsigned long);
int main()
{
    for (int counter=0;counter<=10;counter++)
        cout << setw(2) << counter << "! = " << factroial( counter )
        << endl;
 
    return _getch();
}
C++
1
2
3
4
5
6
7
8
9
10
11
unsigned long factroial(unsigned long number)
{
    if (number <=1)
    {
        return 1;
    }
    else
    {
        return number*factroial(number - 1);
    }
}
не могу понять как программа вычисляет факториал. (знаю что 4! это 4*3*2*1, но как это делает программа не пойму)

Например: 4!
т.е если counter = 4 то и number = 4 и еще - 1
то у меня получается 3*4=12 а у программы 24, т.е у меня не правильно а у нее правильно, объясните как программа вычисляет.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2014, 11:13     Нахождение факториала
Посмотрите здесь:

нахождение факториала - C++
Вот, написал программу, но почему-то ответ неправильный постоянно выходит, подскажите, что я делаю не так? #include &lt;iostream&gt; ...

Циклическое нахождение факториала - C++
Здравствуйте. Дело в том, что почему то значение факториала складывается со значением предыдущего факториала. В чем ошибка? #include...

Нахождение факториала рекурсией - C++
помогите написать программу для нахождения n факториала рекурсивным методом

Нахождение факториала без рекусрсии - C++
Дайте код на функцию, которая находит факториал числа определенного(которое она берет в аргумент)

Нахождение двойного факториала заданного числа N - C++
Дано целое число N (&gt; 0). Найти двойной факториал N: N!! = N·(N–2)·(N–4)·… (последний сомножитель равен 2, если N — четное, и 1, если N...

C++ нахождение факториала числа n с вводом из файла - C++
Здравствуйте! В общем мне нужно написать программку, которая считала бы факториал числа n типа int и чтобы число для расчета бралось из...

Нахождение факториала: для заданного N найти последнюю отличную от нуля цифру - C++
Факториалом натурального числа N (обозначается как N!) называется произведение всех натуральных чисел от 1 до N. Например, 5! = 1*2*3*4*5 =...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
04.03.2014, 11:27     Нахождение факториала #2
Цитата Сообщение от go100gi Посмотреть сообщение
то у меня получается 3*4=12 а у программы 24
Запись
C++
1
return number*factroial(number - 1);
значит не 4*3, а 4*fac(3). При этом: fac(3) = 3*fac(2). fac(2) = 2*fac(1). fac(1) = 1. В итоге:
fac(4) = 4*3*2*1.
go100gi
1 / 1 / 0
Регистрация: 31.07.2013
Сообщений: 31
Завершенные тесты: 1
04.03.2014, 11:30  [ТС]     Нахождение факториала #3
Цитата Сообщение от Tulosba Посмотреть сообщение
значит не 4*3, а 4*fac(3). При этом: fac(3) = 3*fac(2). fac(2) = 2*fac(1). fac(1) = 1. В итоге:
fac(4) = 4*3*2*1.
так, а почему так? почему он умножает 4*3*2*1 а не 4*3?
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
04.03.2014, 11:32     Нахождение факториала #4
Цитата Сообщение от go100gi Посмотреть сообщение
почему он умножает 4*3*2*1 а не 4*3?
Потому что так правильно.
C++
1
2
return 4*3; // 12 
return 4*f(3); // 24
Разницу видите м/у этими строками?
go100gi
1 / 1 / 0
Регистрация: 31.07.2013
Сообщений: 31
Завершенные тесты: 1
04.03.2014, 11:43  [ТС]     Нахождение факториала #5
Цитата Сообщение от Tulosba Посмотреть сообщение
Потому что так правильно.
т.е он отнимает единицу и умножает 4*3 а потом опять отнимает единицу и умножает 3*2, а почему не 4*2 ведь он забрал ее у той же переменной.
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
04.03.2014, 11:47     Нахождение факториала #6
go100gi, почитайте про рекурсию что ли. Вкратце: функция вызывает саму себя (но с другим набором входных данных).
go100gi
1 / 1 / 0
Регистрация: 31.07.2013
Сообщений: 31
Завершенные тесты: 1
04.03.2014, 11:50  [ТС]     Нахождение факториала #7
Цитата Сообщение от Tulosba Посмотреть сообщение
почитайте про рекурсию что ли. Вкратце: функция вызывает саму себя (но с другим набором входных данных).
еще вопрос,

C++
1
return number*factroial(number - 1);
я правильно понял, это вызов функции? я сначала подумал что это number - 1, а скобки поставлены для приоритета.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.03.2014, 11:52     Нахождение факториала
Еще ссылки по теме:

Вычисление факториала - C++
В одном задании я столкнулся с факториал b(итое)=i/(i!) восклицательный знак это факториал я понял а вот как его обьявить в языке c++...

Вычисление факториала. - C++
Помогите пожалуйста решить задачу!! Язык С++ Дано натуральное число n. Написать программу, которая вычисляет факториал неотрицательных...

функция факториала - C++
Задание: Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, на интервале от хнач до хкон с...

Вычисление факториала - C++
Написать программу, чтобы она циклически запрашивала ввод пользователем числа и считала его факториал до тех пор, пока пользователь не...

Вычисление факториала - C++
ребята помогите решить. составьте пожалуйста код!) а) (m+1)!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
04.03.2014, 11:52     Нахождение факториала #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от go100gi Посмотреть сообщение
это вызов функции?
Да, это вызов функции. О чем я Вам писал ещё во втором сообщении
Если бы были просто скобки, то это задавало бы приоритет вычислений, но тут же еще и имя указано. Поэтому такая запись является вызовом функции.
Yandex
Объявления
04.03.2014, 11:52     Нахождение факториала
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru