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

Нужно количество цифр с рекурсивной функцией - C++

Восстановить пароль Регистрация
 
Parilo
14 / 2 / 0
Регистрация: 18.11.2011
Сообщений: 90
27.10.2012, 14:21     Нужно количество цифр с рекурсивной функцией #1
Не могу найти ошибку. Надо найти кол-во цифр введённого числа с помощью рекурсивной функции.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
int sum=0;
int quantity (int);
int quantity (int n)
{ if(n!=0) { sum++; 
  return quantity (n/=10); }
  else sum;
}
 
 int main ()
{int g;
 cin >> g;
 cout << quantity (g);
 
 return 0;
}
Добавлено через 3 минуты
всё нашёл, пропустил "return" перед sum.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
27.10.2012, 14:28     Нужно количество цифр с рекурсивной функцией #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>  
 
static int count = 0;
 
int recurs(int number) 
{   
    if(number == 0) 
        return 1; 
    else  
    { 
        count++;
        return recurs(number /= 10); 
    }
}
 
int main() 
{   
    int number;
    std::cout << "Inter a number " << std::endl; 
    std::cin >> number; 
    recurs(number); 
    std::cout << "Count is " << count << std::endl;
    
}
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
27.10.2012, 14:32     Нужно количество цифр с рекурсивной функцией #3
Использовать глобальную переменную плохо. Без неё вполне можно обойтись:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/*
Надо найти кол-во цифр введённого числа с помощью рекурсивной функции.
*/
 
#include <iostream>
 
int DigitsNum(const int Value)
{
    return ((Value == 0) ? 0 : 1 + DigitsNum(Value / 10));
}
 
void ShowDigitsNum(const int Value)
{
    std::cout << Value << " - " << DigitsNum(Value) << '\n';
}
 
int main(void)
{
    ShowDigitsNum(100);
    ShowDigitsNum(1234);
    ShowDigitsNum(100500);
    system("pause");
}
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
27.10.2012, 14:34     Нужно количество цифр с рекурсивной функцией #4
John Prick, а в числе 0 сколько цифр?))
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
27.10.2012, 14:35     Нужно количество цифр с рекурсивной функцией #5
Цитата Сообщение от John Prick Посмотреть сообщение
Использовать глобальную переменную плохо. Без неё вполне можно обойтись:
в больших программах да, здесь нет. Попробуй свой код с 0.
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
27.10.2012, 14:36     Нужно количество цифр с рекурсивной функцией #6
0! Ноль - это "ничего", "пустота", значит и цифр там нет Шутка, конечно. Для 0 у меня 0 выведет. Но зато можно использовать эту функцию несколько раз подряд. В случае с глобальной переменной, придётся обнулять её каждый раз перед вызовом.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
27.10.2012, 14:38     Нужно количество цифр с рекурсивной функцией #7
C++
1
2
3
4
unsigned int Count(unsigned int a)
{
   return a < 10 ? 1 : 1 + Count(a / 10);
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2012, 14:41     Нужно количество цифр с рекурсивной функцией
Еще ссылки по теме:

Разница между рекурсивной функцией и обычной C++
Программа с рекурсивной функцией C++
C++ Разобраться с рекурсивной функцией обхода бинарного дерева

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

Или воспользуйтесь поиском по форуму:
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
27.10.2012, 14:41     Нужно количество цифр с рекурсивной функцией #8
Ну или так
Yandex
Объявления
27.10.2012, 14:41     Нужно количество цифр с рекурсивной функцией
Ответ Создать тему
Опции темы

Текущее время: 00:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru