-
December 14th, 2012, 11:15 AM
#1
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, 11:45 AM
#2
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, 11:56 AM
#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
Cheers, D Drmmr
Please put [code][/code] tags around your code to preserve indentation and make it more readable.
As long as man ascribes to himself what is merely a posibility, he will not work for the attainment of it. - P. D. Ouspensky
-
December 15th, 2012, 02:53 AM
#4
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 05:16 AM.
-
December 18th, 2012, 11:00 AM
#5
Re: If we don't know how many for we should use,should we use recursive function?
Thanks for your answers.
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 10:54 PM.
-
December 18th, 2012, 12:25 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:
Please use code tags; your code is practically unreadable without them.
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
Cheers, D Drmmr
Please put [code][/code] tags around your code to preserve indentation and make it more readable.
As long as man ascribes to himself what is merely a posibility, he will not work for the attainment of it. - P. D. Ouspensky
-
December 21st, 2012, 01:08 PM
#7
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
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|