CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com

Thread: If we don't know how many for we should use,should we use recursive function?

1. Member
Join Date
Oct 2009
Posts
40

If we don't know how many for we should use,should we use recursive function?

Let's say that we don't know how many "for loops" we need before the program starts and user inputs a number,should we use recursive function instead of "for loops"?Or is there a way to do it using "for loops"?

2. Elite Member Power Poster
Join Date
Jan 2006
Location
Singapore
Posts
6,738

Re: If we don't know how many for we should use,should we use recursive function?

What you ask for can be done using a for loop, but perhaps a while loop would be more appropriate. It depends on the specifics. Without tail recursion optimisation, recursion could be worse as there is a maximum recursive depth before say, stack space runs out.

3. Re: If we don't know how many for we should use,should we use recursive function?

Originally Posted by AwArEnEsS
Let's say that we don't know how many "for loops" we need before the program starts and user inputs a number,should we use recursive function instead of "for loops"?Or is there a way to do it using "for loops"?
See the discussion here: http://forums.codeguru.com/showthrea...-and-recursion

4. Elite Member
Join Date
May 2009
Posts
2,413

Re: If we don't know how many for we should use,should we use recursive function?

Originally Posted by AwArEnEsS
Let's say that we don't know how many "for loops" we need before the program starts and user inputs a number,should we use recursive function instead of "for loops"?Or is there a way to do it using "for loops"?
In the situation you mention there's no difference in principle. In both cases you need a stop criterion to know when to stop iterating or when to stop making recursive calls. In fact iteration and recursion are equivalent. You can always turn one into the other.

Traditionally in procedural languages such as C++ recursion is used mostly when the problem at hand has a very pronounced recursive structure and I don't feel that's the case here. I and probably more than 99% of whoever you ask would use iteration.
Last edited by nuzzle; December 16th, 2012 at 04:16 AM.

5. Member
Join Date
Oct 2009
Posts
40

Re: If we don't know how many for we should use,should we use recursive function?

I couldn't solve the problem,so I want to give the code:

Code:
```#include <stdio.h>
#include <stdlib.h>

#define QUEENS 8
#define int1 unsigned

int1 number=0;
int1 board[QUEENS];

int1 boardOK(register int turn)
{
register int r;

for (r=0;r<turn;r++)
{
if (board[turn]==board[r] ||
board[turn]==board[r] << turn-r ||
board[turn]==board[r] >> turn-r)
{   //printf("\nr:%d",r);
return 0;
}

}
return 1;
}

void printsolution(void)
{
register int1 t,r;

printf("\n\n\tSOLUTION %u\n\n",++number);
for (r=0;r<QUEENS;r++)
{
for (t=1<<QUEENS-1;t>0;t>>=1)
printf(" %c",board[r]==t?'V':'.');
printf("\n");
}

// system("pause");
}

void placequeens(int1 turn)
{

if (turn==QUEENS)
printsolution();

else

for (board[turn]=1;board[turn]<1<<QUEENS;board[turn]<<=1)
if (boardOK(turn))
placequeens(turn+1);

}

int main()
{
placequeens(0);
printf("\n there are %u solutions to %d Queens problem\n",number,QUEENS);
}```

I am trying to turn these codes into a program which uses for loop instead of recursive function,but I couldn't.In the book it says "you can do the same using for loop instead of recursive function" but it doesn't write how we can do it.Also,I need the answer in C not C++ please.
Last edited by AwArEnEsS; December 18th, 2012 at 09:54 PM.

6. Re: If we don't know how many for we should use,should we use recursive function?

Originally Posted by AwArEnEsS
I couldn't solve the problem,so I want to give the code:
Originally Posted by AwArEnEsS
I am trying to turn these codes into a program which uses for loop instead of recursive function,but I couldn't.In the book it says "you can do the same using for loop instead of recursive function" but it doesn't write how we can do it.Also,I need the answer in C not C++ please.
See http://stackoverflow.com/a/531704

7. Member
Join Date
Oct 2009
Posts
40

Re: If we don't know how many for we should use,should we use recursive function?

Thanks for your answer.I have looked at both the links you gave.Seems like it's a bit more complex than I thought.

Posting Permissions

• You may not post new threads
• You may not post replies
• You may not post attachments
• You may not edit your posts
•