#include int sum_squares_down_from_v1(int N) { if (N <= 0) return 0; else { const int N_squared = N*N; const int other_squares = sum_squares_down_from_v1(N-1); return N_squared + other_squares; } } int sum_squares_down_from_v2(int N, int sum_so_far) // an ACCUMULATING parameter { if (N <= 0) return sum_so_far; else return sum_squares_down_from_v2(N-1, sum_so_far + N*N); } // MUST have that return void main() { const int x = read_int(); const int sum1 = sum_squares_down_from_v1(x); print("sum 1 is "); print(sum1); new_line(); const int sum2 = sum_squares_down_from_v2(x, 0); print("sum 2 is "); print(sum2); new_line(); }