Recursion (slightly off-topic)

G

Gaijinco

I'm trying to convert this:

for(int i=0; i<5; ++i)
for(int j=0; j<5; ++j)
for(int k=0; k<5; ++k)
cout << i+1 << j+1 << k+1 << endl;

Into a recusive function. But I ended with:

#include <iostream>
using namespace std;

void permute(int);
int A[3];

int main(){

permute(0);

return 0;
}

void permute(int n){

for(int i=0; i<5; ++i){

A[n]=i+1;

if(n<3){
permute(n+1);
} else {
for(int j=0; j<3; ++j)
cout << A[j];
cout << endl;
}
}
}

Which doesn't work! I'm lost here, could anyone give me a clue?
 
J

John C

You are very close! (but it's late and being the Saturday of a very long
week, there is drinking involved)

Shouldn't that be if(n<2)? If n==2 you will call permute(3) which will
cause A[3] = I+1; and there ain't no A[3]

void permute(int n) {

for(int i=0; i<5; ++i) {

A[n]=i+1;

if(n<3) ////////////////////// if (n<2) here {
permute(n+1);
}
else
{
for(int j=0; j<3; ++j) {
cout << A[j]; }
cout << endl;
}
}
}
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,576
Members
45,054
Latest member
LucyCarper

Latest Threads

Top