Ich habe diese rekursive Funktion, um die Würfel von n geraden Zahlen hinzuzufügen, und ich möchte es nicht zu einer Tail-Rekursion machen.Wie konvertiert man Rekursion in Tail Rekursion in diesem Beispiel?
int sum_even_cubes_rec(int n) {
if (n < 2)
return 0;
if ((n % 2) == 0) {
return (n*n*n + sum_even_cubes_rec(n - 1));
} else {
return (0 + sum_even_cubes_rec(n - 1));
}
}
Dies ist, was ich geschrieben habe, aber es ist falsch und ich weiß nicht, wie es zu beheben ist. Können Sie mir bitte helfen.
int sum_even_cubes_rec2(int n, int acc) {
if ((n % 2) == 0) {
return sum_even_cubes_rec2 (n-1, acc + n*n*n);
} return acc;
}
int sum_even_cubes_helperFunktion(int n) {
return sum_even_cubes_rec2(n, 0);
}
dieses Add 'if (n <2) return 0;' als erste Zeile in der Code und dies zu 'return sum_even_cubes_rec2 (n-1, acc);' als letzte Zeile und entfernen 'Rückkehr acc' aus Ihrem Code –