29.01.2020, 20:25 [+3 UTC]
в нашей команде: 4 177 чел. | участники онлайн: 6 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.80 (15.01.2020)
JS-v.1.35 | CSS-v.3.36

Общие новости:
06.01.2020, 22:45

Форум:
13.01.2020, 16:40

Последний вопрос:
29.01.2020, 19:14
Всего: 151494

Последний ответ:
28.01.2020, 15:55
Всего: 259692

Последняя рассылка:
29.01.2020, 13:45

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
25.01.2013, 02:19 »
Anamul
Stay inforatmive, San Diego, yeah boy!
22.10.2009, 21:43 »
Яна
Большое спасибо за оперативность, а то завтра позарез нужно сдать. [вопрос № 173572, ответ № 255723]

РАЗДЕЛ • С / С++

Создание программ на языках C и C++.

[администратор рассылки: Андрей Кузнецов aka Dr_Andrew (Старший модератор)]

Лучшие эксперты в этом разделе

Коцюрбенко Алексей Владимирович
Статус: Модератор
Рейтинг: 686
Gluck
Статус: Студент
Рейтинг: 334
solowey
Статус: Специалист
Рейтинг: 272

Перейти к консультации №:
 

Консультация онлайн # 144932
Раздел: • С / С++
Автор вопроса: Валуев Александр Михайлович
Отправлена: 24.09.2008, 21:13
Поступило ответов: 4

Здравствуйте ещё раз. Помогите пожалуйста написать программу для подсчета факториала введённого значения на основе рекурсивной функции. Спасибо.

Состояние: Консультация закрыта

Ответ # 230198 от Sk0rp

Здравствуйте, Валуев Александр Михайлович

вот, рекурсивная форма:

Приложение:

Последнее редактирование 24.09.2008, 21:41 Зенченко Константин Николаевич (Старший модератор)

Консультировал: Sk0rp
Дата отправки: 24.09.2008, 21:24

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Ответ # 230201 от Николай // МMM

Здравствуйте, Visual Scooby!

Код С++ программы с комментариями в приложении.

Удачи!

Приложение:

Последнее редактирование 24.09.2008, 21:42 Зенченко Константин Николаевич (Старший модератор)

Консультировал: Николай // МMM
Дата отправки: 24.09.2008, 21:36

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Ответ # 230208 от realbustard

Здравствуйте, Visual Scooby!
Рекурсивные функции лучше не использовать там, где без них можно обойтись.

Приложение:


Консультировал: realbustard
Дата отправки: 24.09.2008, 22:04

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Ответ # 230279 от Глымов Антип Петрович

Здравствуйте, Валуев Александр Михайлович!
#include <iostream.h>

int fact( int k )
{
int f = 1;

for ( int i = 1; i <= k; ++i )
{
f *= i;
}

return f;
}

int main()
{
int z;

cin >> z;

cout << fact( z);

cin.get();

return 0;
}


Консультировал: Глымов Антип Петрович
Дата отправки: 25.09.2008, 12:54

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 144932
Николай // МMM

# 1

= общий = | 24.09.2008, 21:47

Константин Николаевич зачем? Ведь нормально работает. smile

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 2

= общий = | 24.09.2008, 22:25 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

0! сколько будет у Вас?

© Цитата:
res = fact_rekurs(n - 1) * n;
res = - 1 * 0;
Правильно?

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

Николай // МMM

# 3

= общий = | 24.09.2008, 22:34

С стартовым значением 0 - конечно НЕ правильно, но если обеспечивать в коде защиту от всех ситуаций, то сам по себе код как Вы знаете будет большим smile . Главное что от 1 ... работатет нормально. smile

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 4

= общий = | 24.09.2008, 23:07 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Николай // МMM:

© Цитата: Википедия
Факториа́л числа n (обозначается n!, произносится эн факториа́л) — произведение всех натуральных чисел до n включительно:
По определению полагают 0! = 1. Факториал определён только для целых неотрицательных чисел.

© Цитата: Википедия
Существуют два подхода к определению натуральных чисел — числа, используемые при :
перечислении (нумеровании) предметов (первый, второй, третий…) — подход, общепринятый в большинстве стран мира (в том числе и в России).
обозначении количества предметов (нет предметов, один предмет, два предмета…). Принят в трудах Бурбаки, где натуральные числа определяются как мощности конечных множеств.


Оффтопик:
smile наверное в строковых функциях С, разработчики также думали как и Вы, проверки длины строки нет, поэтому их присутствие в программе может вызывать ошибку переполнения буфера(на пользователя надейся, а сам не плошай). А это уже не правильная работа программы. Могу привести подобные ошибки в Паскале (как бы учебном языке и со строгим синтаксисом). О надстройке Guard не вспоминайте, она слетает "легким движением руки" и превращается в кучу никому не нужного кода(кроме хакера конечно, т.к. написана сама с ошибками), все только потому что разработчики поленились исправить эту ошибку в функциях, но придумали заплатку. smile


Кстати, нет проверки на отрицательность числа(может красным разрисовать ответ?). Неотрицательное число: это 0 и любое положительное.

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

Николай // МMM

# 5

= общий = | 24.09.2008, 23:49

© Цитата:
Помогите пожалуйста написать программу для подсчета факториала введённого значения на основе рекурсивной функции


Вот, что просил автор вопроса. Если бы он написал, что нужно программу с проверкой на отрицательность, то без проблем - написал бы. smile

То, как я написал рекурсию есть в книге Герберта Шилдта , у меня разве что имена переменных другие. А по поводу проверки нарушения границ, то Вы же даже лучше меня знаете, что если бы в С++ были разнобразные проверки нарушения границ и всего прочего например как в Паскаль, то он это был бы не С++. В этом же и есть прелесть языка С++, что за код отвечеает сам кодер - лично мне это нравится. smile smile Я вполне с Вами согласен, мне нужно было осуществить в коде реакцию программы на ввод 0 - это действительно нужно было бы сделать. smile

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.24321 сек.

© 2001-2020, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.80 от 15.01.2020
Версия JS: 1.35 | Версия CSS: 3.36