У меня возникает проблема с рекурсивным методом, который вычисляет сумму от 1,2,3 до N, но делает это добавляя (1,2,3 ... к N/2) с (N/2 + 1 ... N).Вычисление суммы от 1 до N путем добавления от 1 до N/2 с N/2 по N в рекурсивном методе
кода я управлять до сих пор это:
public static void main(String[] args) {
System.out.println(sum(10, 1));
}
public static int sum(int n, int start) {
if (start == n){
return n;
}
if (start > n/2){
return start + sum(n, start + 1);
}
return start + sum(n, start + 1);
}
Я считаю, что это неправильно, это задание в школе, где мы должны мотивировать, как расщепление рекурсии вверх в на часть является более/меньше, эффективный способ расчета суммы. (добавление чисел от 1 до N/2 с N/2 до N, а не только от 1 до N напрямую).
Он заставил нас сделать этот способ, чтобы сделать его более трудным для нас, но я не могу понять идею о том, как это сделать вообще. Правильно ли это?
Благодаря
Можете ли вы уточнить, что "добавление (1,2,3 ... до N/2) с (N/2 + 1 ... до N)" означает? –
'N * (N + 1)/2' быстрее: p –
i означает 1,2,3,4,5,6,7,8,9,10, если N = 10 , так что 1 + 2 + 3 + 4 + 5 = 15, 6 + 7 + 8 + 9 + 10 = 45. 15 + 45 = 55 –