teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

疑問への回答を追加

2020/04/27 18:54

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -51,4 +51,25 @@
51
51
  **追記2**
52
52
  すみません。詳細な説明なしにコードを提示してしまいました。
53
53
  詳細な説明は se_hatena2525 さんにお任せします。
54
- 疑問点は質問してください。
54
+ 疑問点は質問してください。
55
+
56
+ **追記3**
57
+ > (i*i + i + 2) / 2 ←このようにシンプルにまとめる方法があったのかと感心しました。
58
+
59
+ i*(i+1) / 2 + 1 と書いても同じです。
60
+
61
+ 1 + (1/2)*(n*n) + (1/2)*n と書くと間違いです。
62
+ 1/2 は整数の割り算なので、結果は 0.5 ではなく 0 だからです。
63
+
64
+ 1 + n*n/2 + n/2 と書くのも間違いです。
65
+ n が奇数の時、割り切れず、端数の 0.5 が切り捨てられるからです。
66
+
67
+ > いまいち、どういうことが行われてるのか理解できていません。
68
+
69
+ a += d; d++; が分からないのですか?
70
+
71
+ a = a + d;
72
+ d = d + 1;
73
+ と書き換えたら分かりますか?
74
+ 数列の次の項 a は現在の項 a に公差 d を加えたものであり、
75
+ 公差 d は 1 増やします。階差数列なので。

3

" " を "" に変更

2020/04/27 18:54

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -27,7 +27,7 @@
27
27
  }
28
28
 
29
29
  private static String callSubject01() {
30
- String resultStr = " ";
30
+ String resultStr = "";
31
31
  int a = 1, d = 1;
32
32
  for (int i = 0; i < 6 ; i++) {
33
33
  resultStr += a + " ";
@@ -38,7 +38,7 @@
38
38
  }
39
39
 
40
40
  private static String callSubject02() {
41
- String resultStr = " ";
41
+ String resultStr = "";
42
42
  for (int i = 0; i < 6 ; i++) {
43
43
  int a = (i*i + i + 2) / 2;
44
44
  resultStr += a + " ";

2

追記2

2020/04/27 01:30

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -46,4 +46,9 @@
46
46
  return resultStr;
47
47
  }
48
48
  }
49
- ```
49
+ ```
50
+
51
+ **追記2**
52
+ すみません。詳細な説明なしにコードを提示してしまいました。
53
+ 詳細な説明は se_hatena2525 さんにお任せします。
54
+ 疑問点は質問してください。

1

コードを追加

2020/04/27 01:13

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -1,4 +1,49 @@
1
1
  等差数列ならコードが書けますか?
2
2
 
3
3
  初項が 7 で、公差が 3 の等差数列の先頭 6個を表示するコードを書いてくれれば、
4
- 質問の階差数列のコードを書くための詳細な説明を差し上げましょう。
4
+ 質問の階差数列のコードを書くための詳細な説明を差し上げましょう。
5
+
6
+ **追記**
7
+
8
+ コンパイル可能はコードは書いてもらえなかったようです。
9
+ 全角文字の「”」を使ったり、resultStr = i; のように int を String に
10
+ 変換できないコードを書いたりしています。
11
+
12
+ 事情はわかりました。
13
+ Androidアプリを作っているので、main も System.out.println も使わない
14
+ ということですね。
15
+
16
+ でも、単純なコードを確かめるためにも Java の基本コードを使ってください。
17
+
18
+ やり方を 2通り示します。
19
+ ```Java
20
+ class Main {
21
+ public static void main(String[] args) {
22
+ String s = callSubject01();
23
+ System.out.println(s);
24
+
25
+ s = callSubject02();
26
+ System.out.println(s);
27
+ }
28
+
29
+ private static String callSubject01() {
30
+ String resultStr = " ";
31
+ int a = 1, d = 1;
32
+ for (int i = 0; i < 6 ; i++) {
33
+ resultStr += a + " ";
34
+ a += d;
35
+ d++;
36
+ }
37
+ return resultStr;
38
+ }
39
+
40
+ private static String callSubject02() {
41
+ String resultStr = " ";
42
+ for (int i = 0; i < 6 ; i++) {
43
+ int a = (i*i + i + 2) / 2;
44
+ resultStr += a + " ";
45
+ }
46
+ return resultStr;
47
+ }
48
+ }
49
+ ```