Ich habe 3 verschachtelte Schleife verwendet. Jetzt möchte ich diese Schleifen in rekursive konvertieren. Gibt es auch eine allgemeine Möglichkeit, eine Schleife in rekursive umzuwandeln?Konvertieren verschachtelte Schleife in Rekursion
#include <stdio.h>
#define f(x, y, z) ((x + y) * (y + z))
int main()
{
int test_case, p, q, r, i, j, k, a[100001], b[100001], c[100001], sum;
scanf("%d", &test_case);
while (test_case--) {
scanf("%d%d%d", &p, &q, &r);
sum = 0;
for (i = 0; i < p; i++) {
scanf("%d", &a[i]);
}
for (i = 0; i < q; i++) {
scanf("%d", &b[i]);
}
for (i = 0; i < p; i++) {
scanf("%d", &c[i]);
}
for (i = 0; i < q; i++) { // I have convert this to recursion.
for (j = 0; j < p; j++) {
for (k = 0; k < r; k++) {
if (b[i] >= a[j] && b[i] >= c[k]) {
sum += f(a[j], b[i], c[k]);
}
}
}
}
printf("%d\n", sum % 1000000007);
}
return 0;
}
Eine 3D-Schleife wird nicht einfach zu konvertieren in Rekursion sein. Um dies in einer funktionalen Sprache zu tun, würde ich wahrscheinlich eine Liste aller verschiedenen Indexpermutationen erstellen und dann rekursiv die Indizes durchlaufen. – Carcigenicate
Ich sehe den Punkt nicht. Warum willst du Rekursion verwenden und nicht loopen? – Stargateur
@Stargateur: Die verschachtelte Schleife braucht viel mehr Zeit und ich versuche meinen Code zu optimieren. Also, welchen besseren Weg, um es zu optimieren als Rekursion. – Jeff