Question 3: modify a program (recursion, loops) [6]
Re-write functions f and g in the program below so that 
(i) function f uses a loop instead of recursion to carry out its error checking/re-prompt cycle, and
(ii) function g uses recursion instead of a loop to display the countdown.
#include <cstdio>
int f();
void g(int n);
int main()
{
   int counter = f();
   g(counter);
}
void g(int n)
{
   while (n > 1) {
      printf("%d\n", n);
      n = n - 2;
   }
}
int f()
{
   int val, numRead;
   printf("Please enter an odd integer\n");
   numRead = scanf("%d", &val);
   if ((numRead == 0) || ((val % 2) == 0)) {
      printf("Incorrect, try again\n");
      if (numRead == 0) {
         scanf("%*s");
      }
      val = f();
   }
   return val;
}
 | 
Sample solution:
void g(int n)
{
   if (n > 1) {
      printf("%d\n", n);
      g(n-2);
   }
}
int f()
{
   int val, numRead;
   do {
      printf("Please enter an odd integer\n");
      numRead = scanf("%d", &val);
      if ((numRead == 0) || ((val % 2) == 0)) {
         printf("Incorrect, try again\n");
         if (numRead == 0) {
            scanf("%*s");
         }
      }
   } while ((numRead == 0) || ((val % 2) == 0));
   return val;
}
 |