|
4 / 4 / 5
Регистрация: 13.10.2016
Сообщений: 116
|
|
Рекурсивно вычислить количество цифр в заданном натуральном числе14.12.2016, 01:01. Показов 10164. Ответов 9
Метки нет (Все метки)
Разработать рекурсивную функцию, возвращающую значение для вычисления количества цифр в заданном натуральном числе.
Обращаюсь в который раз к вашему теплому костру за помощью так, как на парах "мы такого не проходили" и не объясняют, а в теории методички ничего подобного нет. Прошу, сделайте пожалуйста в легкой форме.
0
|
|
| 14.12.2016, 01:01 | |
|
Ответы с готовыми решениями:
9
Вычислить количество цифр в заданном натуральном числе Подсчитать количество цифр в заданном натуральном числе.
|
|
21 / 21 / 8
Регистрация: 07.08.2015
Сообщений: 48
|
||||||
| 14.12.2016, 02:30 | ||||||
1
|
||||||
|
4 / 4 / 5
Регистрация: 13.10.2016
Сообщений: 116
|
||||||
| 14.12.2016, 02:39 [ТС] | ||||||
|
Можно, пожалуйста, в упрощенном стиле? Или проверьте, где у меня ошибка.
0
|
||||||
|
21 / 21 / 8
Регистрация: 07.08.2015
Сообщений: 48
|
|||||||||||
| 14.12.2016, 02:50 | |||||||||||
|
vladrrom, у вас не рекурсивная функция. Рекурсивной называется такая функция, которая вызывает саму себя.
Добавлено через 2 минуты vladrrom, а ошибка в строке 9
1
|
|||||||||||
|
4 / 4 / 5
Регистрация: 13.10.2016
Сообщений: 116
|
|
| 14.12.2016, 02:54 [ТС] | |
|
Просветите меня, как сделать рекурсивную ф-цию xD
Пожалуйста.
0
|
|
|
21 / 21 / 8
Регистрация: 07.08.2015
Сообщений: 48
|
||||||
| 14.12.2016, 03:08 | ||||||
|
vladrrom,
? - это тернарный оператор, слева от него условие, справа два возможных варианта - что_делать_если_true : что_делать_если_false. Он действует подобно if-else, только в одну строку. typedef в начале можно и исключить, сделать просто на int, этот оператор создает псевдоним для типа. Т.е long long int теперь можно писать кратко - big_int А в самой логике тоже ничего сложного. Попробуйте поэтапно разобрать, что происходит при вызове функции, какие значения там используются и быстро поймете суть рекурсии. Добавлено через 7 минут vladrrom, вот например, возьмем значение 123 и вызовем функцию: 1. Сначала в условии 123 делится на 10, что дает результат 12,3, но так как это тип int, то дробная часть отпадает. 2. Проверяется условие. Так как в C++ все что не 0 - это true, то и 12 даст true. 3. Вызывается true блок тернарного оператора (?) 4. В true-блоке вызывается эта же функция с новым значением 12 5. Снова вычисления, опять проверка условия, отбрасывание дробной части - результат 1, true. Вызываем true блок 6. Вычисления, куда же без них. Проверка условия, отбрасывание дробной части - результат 0, false. Вызывается false блок 7. Вот тут самое интересное, рекурсивная функция начинает развязываться и возвращает значение 1 8. В функции, которая вызывалась со значением 12 вернулся результат 1, к нему прибавляется единица и возвращается значение 2 9. В функции, которая вызывалась со значением 123 вернулся результат 2, к нему прибавляется единица и возвращается значение 3 Итого: в числе 3 цифры. Может, сначала это и покажется сложным, но все гораздо проще
1
|
||||||
|
4 / 4 / 5
Регистрация: 13.10.2016
Сообщений: 116
|
||
| 14.12.2016, 03:20 [ТС] | ||
|
Суть рекурсивной ф-ции я вроде понял. Но не пойму как код написать. Так, как вы предложили мы не проходили.. возможно так более шаренным кодерам, как вы и понятно, но студентам только 1-го курса, пока нет))
Следует вопрос: как объявить ф-цию? Таким образом: void get_count(big_int, number) { .. //также как записать условие с if-ом? Я думал if (get_count(number / 10) + 1) {number = number / 10;} else return 1; } И ещё 1 момент: P.S. ночью кателок худо работает, извиняюсь за лаги xD
0
|
||
|
21 / 21 / 8
Регистрация: 07.08.2015
Сообщений: 48
|
|||||||||||
| 14.12.2016, 03:28 | |||||||||||
Сообщение было отмечено vladrrom как решение
Решение
vladrrom, это просто пример, можно модифицировать
1
|
|||||||||||
|
4 / 4 / 5
Регистрация: 13.10.2016
Сообщений: 116
|
|
| 14.12.2016, 03:46 [ТС] | |
|
Просто лучший! Большое спасибо! Я разобрался теперь уж точно с рекурсивной функцией раз и навсегда!
Не каждый способен помочь в 5 часу утра помогать студенту с хвостами xD, но Вы превзошли всех и очень мне помогли. Благодарю Вас.
0
|
|
|
0 / 0 / 0
Регистрация: 18.05.2018
Сообщений: 4
|
|
| 18.05.2018, 10:27 | |
|
Grank, здравствуйте не могли бы помоч Разработать рекурсивный алгоритм, написать реализующую его рекурсивную подпрограмму на С++ и проверить на тестовых данных.
Вычислить значение логического выражения, заданного с клавиатуры, состоящего из натуральных чисел, скобок и операций „&‟ (поразрядное логическое „и‟) и „~‟ (поразрядное логическое „не‟). Например, ~8 & (64 & 125) будет равно 11110111 & 1000000 = 64. Операции „&‟ и „~‟ предполагаются имеющими одинаковый приоритет.
0
|
|
| 18.05.2018, 10:27 | |
|
Помогаю со студенческими работами здесь
10
Определить количество цифр 3 в заданном натуральном числе
Напишите функцию, которая вычисляет сумму цифр в заданном натуральном числе Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|