Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 10.06.2017
Сообщений: 6

Модификации для рекурсивного метода

23.01.2019, 15:08. Показов 1464. Ответов 27

Студворк — интернет-сервис помощи студентам
Написать рекурсивный метод DigitSum(K) целого типа, который находит сумму цифр целого числа K, не используя, оператор цикла.
Модификация в том, чтобы четные принимали отрицательное значение, нечетные положительные.
Например: задали число 4631
в результате сделать такие действия
-4-6+3+1
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Program
    {
        public static void Main(string[] args)
        {
            Console.Write("Enter number: ");
            int num = Convert.ToInt32(Console.ReadLine());
            Console.Write("Result: {0}", DigitSum(num));
            Console.ReadLine();
        }
 
        static int DigitSum(int n)
        {
            if (n < 10) return n;
            var res = n / 10;
            return n - res * 10 + DigitSum(res);
        }
    }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.01.2019, 15:08
Ответы с готовыми решениями:

Распараллеливание рекурсивного метода
Реализую метод медианного сечения квантования изображений: http://www.intuit.ru/studies/courses/993/163/lecture/4513?page=3 Если...

Исправить реализацию рекурсивного метода
Подскажите плиз, Что здесь неправильно using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

Выход из рекурсивного метода не осуществляется по Return
Почему-то после return опять рекурсию повторяет, мб я неправильно её написал ? private string FileIndexCreate() { ...

27
 Аватар для NnineBfive
1 / 1 / 1
Регистрация: 07.11.2018
Сообщений: 73
24.01.2019, 13:09
Студворк — интернет-сервис помощи студентам
Masson1848, а... такое ограничение... в общем я новичек и мне еще во многом надо будет разобраться(в том числе и в вашей 7-ой строке).
0
315 / 244 / 149
Регистрация: 03.10.2017
Сообщений: 886
Записей в блоге: 1
24.01.2019, 13:12
NnineBfive, return GetString(digit / 10, a+1).Insert(0, a % 2 == 0 ? "+" + dig : "-" + dig);

GetString - Вызов рекурсии
digit/10 - делим на 10 и отправляем число
a+1 - увеличиваем текущий индекс
Insert - возвращает строку с вставленной строкой с определённого индекса, в данном случае 0
Условие ? значение : значение - Это тернарный оператор, где перед ? Мы пишем условие, после ? Истинное условие, После : ложное условие. Как конструкция if-else
0
 Аватар для NnineBfive
1 / 1 / 1
Регистрация: 07.11.2018
Сообщений: 73
24.01.2019, 13:18
Masson1848, мне все понятно, кроме insert... я с ним не знаком и не знаю с чем и как его едят... и еще "+" и "-" напрягают. Если не ошибаюсь они после считываются как знаки а не как string, тем самым производит сложение или вычитание значения.
0
315 / 244 / 149
Регистрация: 03.10.2017
Сообщений: 886
Записей в блоге: 1
24.01.2019, 13:27
NnineBfive,
Цитата Сообщение от Masson1848 Посмотреть сообщение
"+" + dig
Где один "+"- Это строка с +, а второй плюс это конкатенация строк
0
3 / 2 / 1
Регистрация: 24.12.2016
Сообщений: 16
24.01.2019, 13:50
Наплакался, вернулся.
Masson1848, Ваш код возвращает строку типа +4-5+6-3+2.
А просили ,кмк, результат этих действий.
0
 Аватар для NnineBfive
1 / 1 / 1
Регистрация: 07.11.2018
Сообщений: 73
24.01.2019, 13:54
Bad_Coder, блин, я не мог проверить и бился над его кодом... а тут такое...
0
315 / 244 / 149
Регистрация: 03.10.2017
Сообщений: 886
Записей в блоге: 1
24.01.2019, 13:57
Bad_Coder,
C#
1
2
3
4
5
6
7
8
public static int GetString(int digit, int a=0)
        {
            if (digit == 0) return 0;
 
            int dig = digit % 10;
 
            return a % 2 == 0 ? GetString(digit / 10, a + 1) + dig : GetString(digit / 10, a + 1) - dig;
        }
Добавлено через 2 минуты
Чётные элементы

C#
1
2
3
4
5
6
7
8
public static int GetString(int digit)
        {
            if (digit == 0) return 0;
 
            int dig = digit % 10;
 
            return dig % 2 == 0 ? GetString(digit / 10) + dig : GetString(digit / 10) - dig;
        }
0
3 / 2 / 1
Регистрация: 24.12.2016
Сообщений: 16
24.01.2019, 14:33
Masson1848, о теперь похоже .
И от моего не сильно отличаеццо .
Только я для чётных не писал - ибо те же ацйя ток вид сбоку.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.01.2019, 14:33

Перевод из рекурсивного метода в "обычный"
Перевод из рекурсивного метода. Нужно преобразовать программу в обычный вид. static void WriteNumber(int a) { ...

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

Как защитить служебные файлы программы для тестов от удаления и модификации
Здравствуйте! Я сделал программу тесты, все данные записаны в *txt файлы (сами тесты, информация про пользователей которые проходили тесты,...

Полиморфизм: вызов метода базового класса, переопределенного метода и нового метода
В базовом классе метод помечен как virtual. Насколько я понял из книги: override означает, что метод не утрачивает связи с базовым...

Модификации метода Эйлера для решения задач Коши
Помогите пожалуйста. нужно написать 5 программ на паскале: 1) метод трапеций 2) метод Хойна 3) метод Эйлера-Коши с итерационной...


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru