私はこの偶数のキューブを追加するためにこの再帰関数を持っており、テール再帰にすることは望ましくありません。この例では、再帰を末尾再帰に変換する方法はありますか?
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));
}
}
これは私が書いたものですが、それは間違っていると私はそれを修正する方法がわかりません。 あなたは私を助けてくれますか?
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);
}
追加この '場合(N <2)戻り0;'として、リターンsum_even_cubes_rec2(N-1、ACC) 'へのコードの最初の行として'この最後の行であなたのコード –