Make sure you completely understand why these functions behave the way they do ______________________________________________________________________________ void version_one(const int n) { print("start "); print(n); new_line(); if (n > 0) version_one(n-1); print("end"); print(n); new_line(); } version_one(4) prints start 4 start 3 start 2 start 1 start 0 end 0 end 1 end 2 end 3 end 4 ______________________________________________________________________________ void version_two(const int n) { print("start "); print(n); new_line(); if (n > 0) version_two(n-1); } version_two(4) is trhe more familiar form, it prints start 4 start 3 start 2 start 1 start 0 ______________________________________________________________________________ void version_three(const int n) { if (n > 0) version_three(n-1); print("end"); print(n); new_line(); } version_three(4) prints end 0 end 1 end 2 end 3 end 4 ______________________________________________________________________________ void version_four(const int n) { const int quo = n / 10; const int rem = n % 10; if (quo > 0) version_four(quo); print(" "); print(rem); } version_four(75396) prints 7 5 3 9 6, all the digits one-by-one. ______________________________________________________________________________ void version_five(const int n) { const int quo = n / 2; const int rem = n % 2; if (quo > 0) version_five(quo); print(" "); print(rem); } version_five just replaces the tens with twos, and now it prints numbers in binary version_five(22) prints 1 0 1 1 0 ______________________________________________________________________________