![]() |
|
Модераторы: bsa |
![]()
|
|
| n199a |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 17.11.2011 Репутация: нет Всего: нет |
Не понятно, по какому принципу действует рекурсия при вычислении факториала (как и в какой последовательности тут происходит) ?
Второй момент:
Допустим надо найти 4!. 4! = 4 * 3 * 2 * 1 = 24 В цикле for: fact = 1 * 2 = 2 fact = 1 * 3 = 3 fact = 1 * 4 = 4 Т.е. return перемножает и возвращает значения переменной fact в Factorial? Где я читал, везде было написано, что return только возвращает значение, а про перемножение не видел ничего... |
||||
|
|||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 4 Всего: 459 |
Когда функция вызывается для нее создаются свои локальные переменные, поэтому в каждом новом вызове себя переданное значение n будет на единицу меньше, а не такое как в прошлом вызове. По ссылке передается общая переменная аккумулятор fact в которой накапливается произведение. Даже не понятно что тут объяснять.
На счет 2й задачи оператор *= работает как fact = fact * i Т.е. тоже работает с накоплением. Произведение каждый раз накапливается. Т.е. если взять ряд 1 2 3 4 и т.д. , то его произведение будет вычисляться для цикла как (((1 * 2) * 3) * 4 ) * ... * n А для рекурсии как (((n * (n-1)) * (n-2)) * (n-3) * .. * 1 -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Тут что-то не то. Зачем в рекурсии переспрашивать о значении n?
-------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
| n199a |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 17.11.2011 Репутация: нет Всего: нет |
Чтобы использовать функцию Factorial надо создать Factorial.h и потом его подключать через #include "Factorial.h"?
Это сообщение отредактировал(а) n199a - 30.5.2013, 00:14 |
|||
|
||||
| EgoBrain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 23.3.2008 Где: Комната Репутация: нет Всего: 2 |
Если реализация функции описана до кода её исползующего то прототип не нужен, если реализация описана после места использования или в отдельном модуле, то необходимо описать прототип перед кодом использования (в подключаемом заголовочном файле или в том же модуле).
В примере feodorv заголовочный файл не требуется. |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |