C: Recursive function into iterative

  • #1
gruba
206
1

Homework Statement


Write an iterative function char* conversion(unsigned int num, int base),
that converts an integer num into any base (base <=10).

Homework Equations

The Attempt at a Solution


How to transform the following recursive function conversion() into iterative:
Code:
#include <stdio.h>

void conversion(unsigned num, unsigned base)
{
  if (num / base)
    conversion(num / base, base);
  printf("%u", num % base);
}

int main()
{
  unsigned num, base;
  printf("num=");
  scanf("%u", &num);
  do{
     printf("base=");
     scanf("%u", &base);
    }
  while (base < 2 || base > 10);
  conversion(num, base);
  return 0;
}
 
Physics news on Phys.org
  • #2
When I have convert between recursive and iterative thinking I find it's best to think about:
* what is changing between the function calls
* how do we know when to terminate and return

So in your example with every recursive call to conversion(num, base) you do num/base so this should be done every loop.

You return when num/base truncates to 0 so use this as the condition in your loop.
 
  • #3
If goal is to follow the logic in the recursive function, use an array like a stack, filling the array from [0] to [n-1], printing the array from [n-1] to [0]. Assuming unsigned is 32 bits, you'll need an array of 32 characters to hold the digits for base 2, less for other bases, so make the array size 32 characters.
 

Similar threads

Replies
3
Views
1K
Replies
1
Views
3K
Replies
10
Views
2K
Replies
3
Views
2K
Replies
12
Views
1K
Replies
1
Views
2K
Replies
1
Views
4K
Back
Top