|
1 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 46
|
||||||
Объясните работу рекурсивной функции из книги Г. Шилдта23.08.2015, 16:12. Показов 2214. Ответов 24
Метки нет (Все метки)
Здравствуйте.Вопрос такой ,самостоятельно изучаю с++ по книге Герберта Шилда,дошел до темы рекурсия ,в книге есть такой пример:
Как я понял функция работает следующим образом: принимаем числа 3 и 2 (fact(n-1) записывает их в стэк ,и возвращает значения в обратном порядке (2 и 3) ,все это по порядку перемножается на 4,и с помощью инструкции return (ans);выводится на экран.Правильно я понял? Обьясните пожалуйста ,на человеческом языке как вообще работает эта функцияВсем спасибо за ответ!
0
|
||||||
| 23.08.2015, 16:12 | |
|
Ответы с готовыми решениями:
24
Пояснить работу рекурсивной функции |
|
1296 / 470 / 151
Регистрация: 24.08.2011
Сообщений: 2,249
|
|
| 23.08.2015, 16:24 | |
|
foxsc, вызывается факториал от 4. 4 != 1, так что вызывается факториал от 3, из него вызывается факториал от 2, из него (от 2) вызывается факториал от 1, и на этом рекурсия заканчивается. Факториал от 1 возвращает через стек значение 1, эта 1-ца из стека умножается на 2, и возвращается через стек в факториал от 3, в нем умножается на 3 и 6-ка возвращается в факториал от 4, в нем умножается на 4 и 24 возвращается в main
1
|
|
|
288 / 175 / 86
Регистрация: 19.04.2014
Сообщений: 1,095
|
|||||||
| 23.08.2015, 16:26 | |||||||
|
Рекурсия - это алгоритм которая вызывает сам себя (проще говоря)
0
|
|||||||
|
6 / 6 / 4
Регистрация: 26.06.2015
Сообщений: 83
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 23.08.2015, 17:02 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
n=5; погружение в рекурсию
Первый вызов функции:
Теперь выходим из нее: Т.к. функция
выход из рекурсии
Теперь обратно:
Четвертый вызов функции:
0
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 23.08.2015, 17:26 | ||
Сообщение было отмечено foxsc как решение
РешениеА в темах о книгах его на полном серьезе как нормального рекомендуют.
1
|
||
| 23.08.2015, 17:29 | |
|
0
|
|
|
1 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 46
|
|
| 23.08.2015, 17:37 [ТС] | |
|
а почему меняется переменная n?в выражении
ans=factr(n-1)*n//почему уменьшается последняя n
0
|
|
|
Заблокирован
|
|
| 23.08.2015, 17:38 | |
|
foxsc, изучаю тоже самое, только по Дейтелам. у них все доступно разжевано, почитайте. если у одного автора вам непонятна какая-то тема, посмотрите как про тоже самое пишут другие.
я думаю эта картинка облегчит ваше понимание. тут показано развёртывание рекурсивной функции и свёртывание с возвращаемым значением. т.е. на решение каждой ступени, внутри одной функции вызывается точно такая же отдельная функция
1
|
|
|
Заблокирован
|
|
| 23.08.2015, 17:39 | |
|
т.е. подсчёт происходит от обратного. умножая от наименьших чисел к наибольшим
0
|
|
|
1 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 46
|
|
| 23.08.2015, 17:41 [ТС] | |
|
а книга называется "Как программировать на с++?"
0
|
|
|
1296 / 470 / 151
Регистрация: 24.08.2011
Сообщений: 2,249
|
|
| 23.08.2015, 17:41 | |
|
foxsc, да
0
|
|
|
Заблокирован
|
|
| 23.08.2015, 17:55 | |
|
можете мне не верить, но в русском варианте она называется "Как программировать па C++"
0
|
|
| 23.08.2015, 18:10 | |
|
0
|
|
| 23.08.2015, 18:12 | |
|
Не по теме: castaway, скорее всего это автоматический распознаватель текста ("и" похожа в общем-то на "п", и на "н"), во многих книгах такое встречала
0
|
|
| 23.08.2015, 18:15 | |
|
Не по теме: Керра, я тоже об этом подумал, но формат DjVu использует изображения а не текст, следовательно сначала книгу "распознали" а потом ещё и сосканировали. Пользы и удовольствия от чтения такой книги мало:)
0
|
|
| 23.08.2015, 18:16 | |
|
Не по теме: castaway, скорее ее просто конвертировали в djvu, уж больно качественное изображение
0
|
|
| 23.08.2015, 18:23 | |
|
Не по теме: Керра, может и так, к счастью я не знаком с этой процедурой.
0
|
|
| 23.08.2015, 20:26 | ||
|
Не по теме:
0
|
||
| 23.08.2015, 20:32 | |
|
Не по теме: rep plz, согласись, удовольствие от чтения бумажной литераторы без ошибок будет больше!
0
|
|
| 23.08.2015, 21:47 | |
|
0
|
|
| 23.08.2015, 21:47 | |
|
Помогаю со студенческими работами здесь
20
Книги Г.Шилдта в каком порядке нужно или какие книги для изучения с++ Разработать программу по алгоритму с использование рекурсивной функции и без использования рекурсивной функции Книги Шилдта Книги Шилдта
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Сочетание глобально распределённой вычислительной мощности и инновационных. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
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-динозавры, а новое поколение лёгких потоков. Откат?. . .
|