|
70 / 64 / 5
Регистрация: 09.06.2012
Сообщений: 291
|
||||||
Рекурсия не могу понять29.06.2012, 14:10. Показов 6604. Ответов 26
Метки нет (Все метки)
Здравствуйте программисты,помнится давно давно изучал с++,и тут по новой начал читать книгу и дело дошло до факториала,есть способ через циклы и через рекурсию.Так вот : метод возвращает всё как положено,но вот только я не могу понять как?Как она это делает?так как в конце у нас return 1 почему когда я вывожу в cout у меня 2 6 24 120.Разъесните пожалуйста что как и где происходит,а то блин я чуть монитор уже не выкинул в окно...
0
|
||||||
| 29.06.2012, 14:10 | |
|
Ответы с готовыми решениями:
26
Стек на основе массива структур - эт как понять читаю литературу и не могу понять!
Не могу понять почему не могу считать символьный ряд через cin.getline |
|
68 / 68 / 18
Регистрация: 03.06.2012
Сообщений: 176
|
||||||
| 29.06.2012, 14:29 | ||||||
|
В функции factr(int n) не везде return 1; Только при аргументе n == 1 возвращается единица. В других случаях высчитывается переменная answer
Возьми вот такой маленький пример, как факториал 2!. И посмотри как он рассчитывается.
1
|
||||||
|
70 / 64 / 5
Регистрация: 09.06.2012
Сообщений: 291
|
|
| 29.06.2012, 14:59 [ТС] | |
|
Блин капец щас башка взарьвется,офигеть кажется такое простое,не тут та было...эх...
сейчас попробывал схиматично посмтоить только щас вроде маленько дошло
0
|
|
|
68 / 68 / 18
Регистрация: 03.06.2012
Сообщений: 176
|
|
| 29.06.2012, 15:18 | |
|
0
|
|
|
|
|
| 29.06.2012, 19:26 | |
Сообщение было отмечено как решение
Решение
3
|
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|||||||
| 30.06.2012, 05:39 | |||||||
|
xADMIRALx, при n!=1 вычиляется факториал, равный 1*2*3*4*....*(n-3)*(n-2)*(n-1)*n=(1*2*3*4*....*(n-3)*(n-2)*(n-1))*n, причём, вместо 1*2*3*4*....*(n-3)*(n-2)*(n-1) подставляеся факториал n-1 (а он раввен этому произведению, согласно определению факториала), а для его получения ещё раз вызвается сама функуция factr, в чём и состоит суть рекурсии. При рекурсии обязательно, чтоб в конце был вызван экземпляр функции, который пойдёт по не рекурсивной ветви, в случае факториала это
0
|
|||||||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 30.06.2012, 14:16 | |
|
SeryZone, по каким критериям вы определили её скорость и качество?
0
|
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||
| 30.06.2012, 14:59 | ||
|
0
|
||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 30.06.2012, 15:01 | |
|
taras atavin, я разве вам вопрос задал?
0
|
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||
| 30.06.2012, 15:06 | ||
|
Рекурсия хороша только тогда, когда рекурсивна сама задача, например, при работе с деревьями, при разборе инфиксных выражений, при парсинге xml. Но не в факториале. Рекурсия на ровном месте = наглядное пособие, как делать не надо.
Добавлено через 1 минуту
0
|
||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 30.06.2012, 15:18 | |
|
taras atavin, факториал рекурсивен, все формальные определения факториала, что я видел, определяются сами через себя. В свою очередь, разбор инфиксных выражений (да и вообще любых языков, грамматики которых контекстно свободны), лучше реализовать через магазинные автоматы (LA/LALR разбор). Это я к тому, что не обязательно для рекурсивных задач рекурсия является наилучшим вариантом.
0
|
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||
| 30.06.2012, 15:30 | ||
|
Факториал есть произведение всех целых чисел от единицы до своего аргумента, а рекурсивное определение на посвящённой факториалу лекции по высшей математике выводится из этого. И это не я придумал, спроси у Льва Наумовича Гутмана, который ту лекцию читал (то есть вёл занятие). Свести к рекурсивной можно даже задачу вычисления среднего арифметического, а определитель матрицы вычислить не рекурсивно. Но это не означает, что среднее арифметическое надо считать рекурсивно.
Добавлено через 3 минуты
0
|
||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|||
| 30.06.2012, 15:42 | |||
|
taras atavin, да, факториал можно вполне естественным образом определить итеративно через оператор произведения, согласен.
Добавлено через 6 минут taras atavin, в общем, не я сказал, что факториал через рекурсию уделывает все прочие решения, потому на этом предлагаю нашу дискуссию окончить. В свою очередь, жду ответ SeryZone на поставленный мною ранее вопрос.
0
|
|||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|||||||
| 01.07.2012, 09:36 | |||||||
0
|
|||||||
|
Супер-модератор
|
||
| 01.07.2012, 09:49 | ||
|
7886578673647905035523632139321850622951 3597768717326329474253324435944996340334 2920304284011984623904177212138919638830 2576427902426371050619266249528299311134 6285727076331723739698894392244562145166 4240254033291864131227428294853277524242 4075739032403212574055795686602260319041 7032406235170085879617892222278962370389 7374720000000000000000000000000000000000 000000000000000 ![]() А чтобы замерить производительность короткого кода, погрузите его в цикл и выполните 10000 раз (или более). Так можно и два алгоритма сравнить (только цикл должен быть организован одинаково)...
0
|
||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||
| 01.07.2012, 09:58 | ||
|
0
|
||
|
Супер-модератор
|
|
| 01.07.2012, 10:13 | |
|
Не пропустил, просто пошутил...
Для чего могут понадобиться факториалы чисел в диапазоне до 15-20? Биномиальные коэфф-ты, спецфункции и т.д. Но в нормальных программах массив факториалов вычисляют один раз, а потом нужный факториал просто берут из соотв. ячейки (обращаясь по индексу), что всяко быстрее, чем вычислять его заново... "Театр начинается с вешалки... но будущее все равно за кинематографом" В. Пелевин.
0
|
|
| 01.07.2012, 10:13 | |
|
Помогаю со студенческими работами здесь
20
Рекурсия. Нужно исправить ошибку, не могу понять в чём причина Как понять поставленную задачу. Не могу понять этот полиморфизм? Пытаюсь понять комбинаторику.Не могу понять какую формулу использовать Не могу понять понять смысл резидентной программы Не могу понять, почему программа работает неправильно( Знаю, что где-то ошибки, но не могу найти Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|