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

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

23.01.2019, 15:08. Показов 1394. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru