1,2,3とNの和を計算する再帰的な方法を作るのに問題がありますが、 (N/2 + 1 ...〜N)で(1,2,3 ... N/2)を加える。再帰的な方法でN/2〜Nを1にN/2を加えて合計1〜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);
}
私は、これは間違っていると信じて、それは我々がパーツにに再帰アップを分割するより/小さい方がどのようにやる気にさせる必要があり、学校での割り当てであります合計を計算する効率的な方法。 (N/2からNへの1からN/2への数の加算、1からNへの直接の代わりに)。
彼は私たちをこのようにして私たちのために難しくしましたが、私はこれをどうやって行うのかについての考え方を理解することはできません。それが正しいか?
ありがとうございます。
ます "(Nへ... N/2 + 1)と(N/2に1,2,3 ...)の追加" 何の手段を明確にしてくださいことはできますか? –
「N *(N + 1)/ 2」はより速い:p –
N = 10の場合1,2,3,4,5,6,7,8,9,10を意味する したがって1 + 2 + 3 + 4 + 5 = 15,6 + 7 + 8 + 9 + 10 = 45である。 15 + 45 = 55 –