C: Recursive function into iterative

  • #1
208
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;
}
 

Answers and Replies

  • #2
5
0
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
rcgldr
Homework Helper
8,701
530
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.
 

Related Threads on C: Recursive function into iterative

Replies
5
Views
2K
  • Last Post
Replies
4
Views
257
Replies
5
Views
2K
  • Last Post
Replies
24
Views
3K
Replies
2
Views
1K
  • Last Post
Replies
16
Views
9K
Replies
1
Views
2K
Replies
1
Views
16K
Replies
1
Views
19K
Top