我有這個遞歸函數來添加n個偶數的立方體,我不想把它變成尾遞歸。如何在本例中將遞歸轉換爲尾遞歸?
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);'作爲最後一行並從你的代碼 –