Подсчитать количество цифр

Fobos1994

Используя рекурсивную подпрограмму: подсчитать количество цифр в заданном натуральном числе. Помогите пожалуйста..я неезнаю как реализовать рекурсию..
5 ответов

Fobos1994

#include <iostream>
 
int count_digits_helper(int sum, int number)
{
   return !number ? sum : count_digits_helper(sum + 1, number / 10);
}
 
int count_digits(int number)
{
   return !number ? 1 : count_digits_helper(0, number);
}
 
int main()
{
   std::cout << count_digits(10000) << std::endl;
}
http://liveworkspace.org/code/3HxXl3$5


Fobos1994

ForEveR, можете пожалуйста обьяснить более понятно? мне просто нужно реализовать на Borland c++ builder 6 а такой код я впервые вижу..


Fobos1994

Fobos1994, А что не так-то? Ну для борланда подозреваю нужно будет включить iostream.h и убрать std::... А остальной код стандартен.


Fobos1994

ForEveR, Спасибо,я переделал,работатет..но что мне сказать если меня спросит препод.. в частности я незнаю как обьянснить данную строчку
return !number ? sum :
Возможно ли ее както описать для простых смертных?.. ну я имею ввиду расписать шаг-за-шагом,а не все в одной строчке..


Fobos1994

Немного проще
int _amount( int n ){ 
    static int i = 0;
    if( n ) { _amount(n/10); i++; };
    if( !n ) { i = 0; };
    return i; 
};