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

• December 14th, 2012, 10:15 AM
AwArEnEsS
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"?
• December 14th, 2012, 10:45 AM
laserlight
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.
• December 14th, 2012, 10:56 AM
D_Drmmr
Re: If we don't know how many for we should use,should we use recursive function?
Quote:

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
• December 15th, 2012, 01:53 AM
nuzzle
Re: If we don't know how many for we should use,should we use recursive function?
Quote:

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.
• December 18th, 2012, 10:00 AM
AwArEnEsS
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.
• December 18th, 2012, 11:25 AM
D_Drmmr
Re: If we don't know how many for we should use,should we use recursive function?
Quote:

Originally Posted by AwArEnEsS
I couldn't solve the problem,so I want to give the code: