Skip to main content
Code Review

Return to Answer

Commonmark migration
Source Link

###Can be done without recursion###

Can be done without recursion

You can do the same thing without recursion, by simply adding one to the rightmost dimension, and then "carrying over" when that number exceeds the one to its left.

Here is a sample implementation:

void loop()
{
 int i = 0;
 for (i = 0; i < dim; i++) {
 number[i] = 1;
 }
 do {
 do_sth();
 for (i = dim - 1; i > 0; i--) {
 if (number[i] < number[i-1]) {
 number[i]++;
 break;
 }
 number[i] = 1;
 }
 if (i == 0) {
 if (number[0] < max) {
 number[i]++;
 } else {
 return;
 }
 }
 } while (1);
}

###Can be done without recursion###

You can do the same thing without recursion, by simply adding one to the rightmost dimension, and then "carrying over" when that number exceeds the one to its left.

Here is a sample implementation:

void loop()
{
 int i = 0;
 for (i = 0; i < dim; i++) {
 number[i] = 1;
 }
 do {
 do_sth();
 for (i = dim - 1; i > 0; i--) {
 if (number[i] < number[i-1]) {
 number[i]++;
 break;
 }
 number[i] = 1;
 }
 if (i == 0) {
 if (number[0] < max) {
 number[i]++;
 } else {
 return;
 }
 }
 } while (1);
}

Can be done without recursion

You can do the same thing without recursion, by simply adding one to the rightmost dimension, and then "carrying over" when that number exceeds the one to its left.

Here is a sample implementation:

void loop()
{
 int i = 0;
 for (i = 0; i < dim; i++) {
 number[i] = 1;
 }
 do {
 do_sth();
 for (i = dim - 1; i > 0; i--) {
 if (number[i] < number[i-1]) {
 number[i]++;
 break;
 }
 number[i] = 1;
 }
 if (i == 0) {
 if (number[0] < max) {
 number[i]++;
 } else {
 return;
 }
 }
 } while (1);
}
Source Link
JS1
  • 28.8k
  • 3
  • 41
  • 83

###Can be done without recursion###

You can do the same thing without recursion, by simply adding one to the rightmost dimension, and then "carrying over" when that number exceeds the one to its left.

Here is a sample implementation:

void loop()
{
 int i = 0;
 for (i = 0; i < dim; i++) {
 number[i] = 1;
 }
 do {
 do_sth();
 for (i = dim - 1; i > 0; i--) {
 if (number[i] < number[i-1]) {
 number[i]++;
 break;
 }
 number[i] = 1;
 }
 if (i == 0) {
 if (number[0] < max) {
 number[i]++;
 } else {
 return;
 }
 }
 } while (1);
}
lang-c

AltStyle によって変換されたページ (->オリジナル) /