|
1 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 46
|
||||||
Объясните работу рекурсивной функции из книги Г. Шилдта23.08.2015, 16:12. Показов 2286. Ответов 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
Книги Г.Шилдта в каком порядке нужно или какие книги для изучения с++ Разработать программу по алгоритму с использование рекурсивной функции и без использования рекурсивной функции Книги Шилдта Книги Шилдта
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|