Эта тема мною создана в связи с вопросом на 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