# C: Recursive function into iterative

## Homework Statement

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

## 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;
}

Related Engineering and Comp Sci Homework Help News on Phys.org
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.

rcgldr
Homework Helper
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.