On-line: гостей 0. Всего: 0 [подробнее..]
Программисты всех стран, объединяйтесь!

АвторСообщение



ссылка на сообщение  Отправлено: 31.05.18 17:24. Заголовок: Рекурсивный вывод простых делителей числа на консоль в C++


Эта тема мною создана в связи с вопросом на Stackoverflow Prime factors in c by using only recursion, который попался мне на глаза.

Задания на рекурсию часто встречаются для начинающих программистов.

Функция, приведенная в вопросе, может быть реализована в C++ следующим образом

 
#include <iostream>

std::ostream & prime( unsigned int n, unsigned int i = 2, std::ostream &os = std::cout )
{
if ( n > 1 )
{
if ( n % i == 0 )
{
os << i << ' ';
n /= i;
}
else
{
++i;
}

prime( n, i, os );
}

return os;
}

int main()
{
while ( true )
{
std::cout << "Enter a non-negative integer number (0 - exit): ";

unsigned int n;

if ( not ( std::cin >> n ) or ( n == 0 ) ) break;

std::cout << '\n';

prime( n ) << "\n\n";
}
}


Вывод этой демонстрационной программы может быть, к примеру, следующим:

 
Enter a non-negative integer number (0 - exit): 1


Enter a non-negative integer number (0 - exit): 2

2

Enter a non-negative integer number (0 - exit): 3

3

Enter a non-negative integer number (0 - exit): 4

2 2

Enter a non-negative integer number (0 - exit): 5

5

Enter a non-negative integer number (0 - exit): 6

2 3

Enter a non-negative integer number (0 - exit): 7

7

Enter a non-negative integer number (0 - exit): 8

2 2 2

Enter a non-negative integer number (0 - exit): 9

3 3

Enter a non-negative integer number (0 - exit): 10

2 5

Enter a non-negative integer number (0 - exit): 11

11

Enter a non-negative integer number (0 - exit): 12

2 2 3

Enter a non-negative integer number (0 - exit): 13

13

Enter a non-negative integer number (0 - exit): 14

2 7

Enter a non-negative integer number (0 - exit): 15

3 5

Enter a non-negative integer number (0 - exit): 0


Спасибо: 0 
ПрофильЦитата Ответить
Новых ответов нет


Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 3
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет