so.intech said:
for example,
ret = 0;
for(i=0; i<3; i ++
{
for(j=0; j<4; j++
{
for(k=0; k<3; k++
{
for(m=0; m<4; m++
{
. . . //lots of groups <3 , <4 nested loops
ret ++;
}
}
}
}
how can i write a recursive function to implement this?
Here's one way you could do it:
#include <stdio.h>
struct for_loop_vars_
{
const char *name;
int start;
int end;
int modifier;
};
typedef struct for_loop_vars_ for_loop_vars;
void recursiveforloop(for_loop_vars *p, size_t d)
{
int i;
printf("----------- LOOP START ---------------\n");
printf("Loop name: %s\n", p->name);
printf("Begin at: %d\n", p->start);
printf("Modify by: %d\n", p->modifier);
printf("End at: %d\n\n", p->end);
for(i = p->start; i != p->end; i += p->modifier)
{
if(d > 0)
{
recursiveforloop(p + 1, d - 1);
}
else
{
printf("I'm in the inmost loop - index is %d\n", i);
}
}
printf("----------- LOOP END ---------------\n");
}
int main(void)
{
for_loop_vars control[] =
{
{ "Outermost", 0, 3, 1 },
{ "Outerish", 0, 4, 1 },
{ "Innerish", 0, 3, 1 }, /* add loops to taste! */
{ "Innermost", 0, 9, 1 }
};
size_t depth_to_go = sizeof control / sizeof control[0];
recursiveforloop(control, depth_to_go - 1);
return 0;
}
--
Richard Heathfield
"Usenet is a strange place" - dmr 29/7/1999
http://www.cpax.org.uk
email: rjh at above domain (but drop the www, obviously)