Форум программистов, компьютерный форум CyberForum.ru

Рекурсия: подсчет количества четных цифр числа (на С) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Rogue-like http://www.cyberforum.ru/cpp-beginners/thread278601.html
Нашел в интернете данный вид жанра игры, есть ли у кого простенькие наброски движка? Ну или хотябы подскажите, как сделать можно...
C++ нумерация строк в настройках компилятора Люди помогите пожалуйста где в visual studio 6, включить нумерацию строк в настройках компилятора... всем спасибо, извиняюсь за нубовский вопрос )) но реально все облазил, не нашел... начал изучать си, а без нумерации строк не очень удобно както ) http://www.cyberforum.ru/cpp-beginners/thread278573.html
C++ Очередь на печать
Народ подскажите пожалуйста, какими способами в С можно получить информацию об очереди на печать?
C++ Осуществить в матрице циклический сдвиг на Т элементов
Помогите решить задачку плиз: Осуществить в матрице циклический сдвиг на Т элементов
C++ вычислить m значений функций f (x) на отрезке http://www.cyberforum.ru/cpp-beginners/thread278561.html
вычислить m значений функций f (x) на отрезке .Вычисление величины оформить в в иде функции. Функция f (x) = x-tg (x) a=0,5 b=1 m=10
C++ Алгоритм Бауэра и Замельзона. Не могу найти ошибку. #include <stdio.h> #include <math.h> #include <iostream> using namespace std; char stack_z; double stack_c; int tos_z=0; int tos_c=0; char number; подробнее

Показать сообщение отдельно
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
18.04.2011, 15:48     Рекурсия: подсчет количества четных цифр числа (на С)
Объясняю посимвольно:
?: - тернарный оператор. Если написано exp1 ? exp2 : exp3, это означает, что если exp1 истинно, то результатом операции будет exp2, в ином же случае exp3.
В данном случае: !number - проверка, не нулевое ли число. Если так - то достигнута база рекурсии, результатом будет 0. Если нет, то надо к итоговой сумме (которая получается в результате рекурсивных вызовов count_even_digits) прибавить 0 или 1, в зависимости от того, является ли очередная просматриваемая цифра числа (в данном случае - последняя) чётной или нечётной. number & 1 - проверка на чётность (младший разряд нечётного числа 1, чётного 0). Поскольку младший разряд последней цифры числа совпадает с младшим разрядом всего числа, нет смысла вычленять последнюю цифру через остаток от деления на 10, можно сразу проверить всё число. Так вот, если число у нас чётное, то мы к итоговой сумме (которая, повторюсь, получается неявно в последовательных рекурсивных вызовах) должны прибавить 1, иначе 0 (результат, инверсный результат проверки на чётность), а затем рекурсивно вызвать нашу функцию, но для числа без последней цифры (которую мы только что проверили и включили в результат).
В итоге результат можно расписать в виде суммы нулей и единиц, общее количество слагаемых равно количеству цифр числа, и на каждой позиции, где в числе стоит нечётная цифра, в сумме будет стоять 0, а где чётная - 1. Т.е. примерно так
Код
1   2   4   3   5   6   2   7
0 + 1 + 1 + 0 + 0 + 1 + 1 + 0
 
Текущее время: 22:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru