Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 22.06.2015
Сообщений: 36

Рекурсивный метод суммирования цифр от целого числа

09.04.2020, 01:50. Показов 2923. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые обитатели форума.

Не могли бы находящиеся тут профессионалы, ну или же просто продвинутые в программировании люди объяснить принцип работы простейшего алгоритма использования рекурсивного метода?

Уже прочитал 3 статьи и посмотрел столько же видосов по этой теме, саму суть и принцип понять могу, стандартный пример с факториалом или суммой чисел от 1 до 100 полностью разобрал и работу этих методов понял. Но вот в этой задаче понять концепцию чего-то не получается.

Прошу буквально на пальцах объяснить всю работу каждой строчки, понимаю что все предельно просто, но всё что мне не понятно я буду вдалбиливать до конца, особенно тему рекурсии.

Java
1
2
3
4
5
6
7
8
9
10
11
public static void main(String[] args) {
        System.out.println(summa(15));
    }
 
public static int summa(int x) {
        int d = 0;
        if (x % 2 == 0) return 0;
        d += x % 10;
        d += summa(x / 10); 
        return d;
    }
Спасибо заранее!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.04.2020, 01:50
Ответы с готовыми решениями:

Рекурсивный метод для вывода на экран цифр числа
Задание: Разработать рекурсивный метод для вывода на экран цифр натурального числа в прямом порядке. Применить этот метод ко всем числам...

Рекурсивный метод для вычисления количества цифр заданного натурального числа
4. Разработать рекурсивный метод, возвращающий значение: для вычисления количества цифр заданного натурального числа

Вычислить сумму цифр числа, являющегося произведением цифр заданного целого трехзначного числа
Вычислить сумму цифр числа, являющегося произведением цифр заданного целого трехзначного числа. Входные данные: Во входном потоке...

4
 Аватар для StepFather322
365 / 252 / 113
Регистрация: 07.10.2017
Сообщений: 1,330
09.04.2020, 02:48
Цитата Сообщение от Cestuh Посмотреть сообщение
if (x % 2 == 0) return 0;
Почему твой метод возвращает 0 если число четное?
0
0 / 0 / 0
Регистрация: 22.06.2015
Сообщений: 36
09.04.2020, 05:16  [ТС]
Цитата Сообщение от StepFather322 Посмотреть сообщение
Почему твой метод возвращает 0 если число четное?
Это не мой метод, поэтому и хочу разобраться.

Был еще вот такой пример решения задачи на паскале

Pascal
1
2
3
4
5
function f_sum(ch:integer):integer;
begin
  if ch=0 then f_sum:=0
          else f_sum:=(ch mod 10) +f_sum(ch div 10);
end;
Тут возвращается 0, если заданное число равно 0, но вот работу простейшего алгоритма понять до сих пор не могу.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
09.04.2020, 07:45
Цитата Сообщение от Cestuh
буквально на пальцах объяснить всю работу каждой строчки
https://www.cyberforum.ru/java/thread2250765.html
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38195 / 21128 / 4309
Регистрация: 12.02.2012
Сообщений: 34,734
Записей в блоге: 14
09.04.2020, 08:19
Цитата Сообщение от Cestuh Посмотреть сообщение
Это не мой метод,
- плохой метод

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class Main
{
    public static int sumDigs(int x)
    {
        System.out.println("Enter sumDigs x="+x);
        
        if (x==0)
        {
            System.out.println("Exit sumDigs result=0");
            return 0;
        }
        else
        {
            int r;
            r=x%10+sumDigs(x/10);
            System.out.println("Exit sumDigs result="+r);
            return r;
        }
    }
    
    public static void main(String[] args) {
        System.out.println(sumDigs(1254));
    }
}
Вывод:

Enter sumDigs x=1254
Enter sumDigs x=125
Enter sumDigs x=12
Enter sumDigs x=1
Enter sumDigs x=0
Exit sumDigs result=0
Exit sumDigs result=1
Exit sumDigs result=3
Exit sumDigs result=8
Exit sumDigs result=12
12

Разберись, как происходит суммирование.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.04.2020, 08:19
Помогаю со студенческими работами здесь

Описать функцию целого типа,находящую количество цифр целого положительного числа К
Описать функцию DigitCount(К) целого типа,находящую количество цифр целого положительного числа К.Используя эту функцию,найти количество...

Описать функцию целого типа, находящую количество цифр целого положительного числа K
Описать функцию DigitCount(K) целого типа, находящую количество цифр целого положительного числа K. Используя Описать функцию DigitCount(K)...

Рекурсивная функция целого типа, которая находит сумму цифр целого числа.
Пожалуйста ,помогите Написать рекурсивную функцию целого типа, которая находит сумму цифр целого числа*K, не*используя оператор цикла....

Из произвольного целого числа или длинного целого числа, вводимого с клавиатуры, путем изменения цифр 0 или 1
Произвольное длинное целое число разделить на четыре однобайтовых целых числа, каждому из которых поставить в соответствие символ.

Описать функцию DigitCount(K) целого типа, находящую количество цифр целого положительного числа K
Описать функцию DigitCount(K) целого типа, находящую количество цифр целого положительного числа K. Используя эту функцию, найти...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru