#include /* what does this function do? how can we understand it? Find a simple case. If Q is zero it is trivial to work out, N being less than 10 makes Q zero. Now we know exactly what thing(X) does if X < 10 That means that if Q < 10, we'll always know what it does, N being less than 100 makes Q less than 10. Now we know exactly what thing(X) does if X < 100 keep on building knowledge up based on what you have already worked out, and soon you know exactly what thing does in all circumstances */ void thing(const int N) { const int Q = N / 10, R = N % 10; print(R); if (Q > 0) thing(Q); print(R); } void main() { thing(3); new_line(); thing(37); new_line(); thing(375); new_line(); thing(3758); new_line(); thing(37582); new_line(); thing(375824); new_line(); }