AndroidStudioのエミュレーターに
1
2
4
7
11
16
と【for文】と【階差数列】を利用して表示させたかったのですが、調べてもわかりませんでした。
【トライしてみたコード】
private String callSubject(){
String resultStr = “ ”;
for(i=1; i<=16; i??){
resultStr+= i;
}
}
??のところになにをすれば1~16までの表示をさせることができるかわかりません。
『やり投げみたいだ』という貴重な意見をいただいたので、修正して、どこがわからないかを具体的に書かせていただきます。
【いまわかっていること】
1~10までの表記の仕方はわかってます。
1が初項のためi=1, 10以下のためi<=10, そして一つずつあがるからi++だという理論はわかるのですが、
【考えてみたこと&いまわからないこと】
1,2,4,7,11,16の場合、
an{1,2,4,7,11,16}から
bn{1,2,3,4,5}と見出し
そこからb=nという公式を出しそこからさらにan=1+1/2n^2+1/2nというところまで求めたのですが、これを活用してresultStrで求める方法を試したのですが
for(i=1; i<=16; i??)の??の部分に
for(i=1; i<=16; i+=1+1/2n^2+1/2n)と実行しても赤い下線部がでて実行ができませんでした。
またjavaで二乗が使えるのかどうかということを調べたのですが、出来ないみたいで、どのように展開するのがいいのか困っている状況です。
アドバイス頂けると幸いです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/26 06:38
退会済みユーザー
2020/04/26 23:31
2020/04/26 23:49
回答2件
0
ベストアンサー
等差数列ならコードが書けますか?
初項が 7 で、公差が 3 の等差数列の先頭 6個を表示するコードを書いてくれれば、
質問の階差数列のコードを書くための詳細な説明を差し上げましょう。
追記
コンパイル可能はコードは書いてもらえなかったようです。
全角文字の「”」を使ったり、resultStr = i; のように int を String に
変換できないコードを書いたりしています。
事情はわかりました。
Androidアプリを作っているので、main も System.out.println も使わない
ということですね。
でも、単純なコードを確かめるためにも Java の基本コードを使ってください。
やり方を 2通り示します。
Java
1class Main { 2 public static void main(String[] args) { 3 String s = callSubject01(); 4 System.out.println(s); 5 6 s = callSubject02(); 7 System.out.println(s); 8 } 9 10 private static String callSubject01() { 11 String resultStr = ""; 12 int a = 1, d = 1; 13 for (int i = 0; i < 6 ; i++) { 14 resultStr += a + " "; 15 a += d; 16 d++; 17 } 18 return resultStr; 19 } 20 21 private static String callSubject02() { 22 String resultStr = ""; 23 for (int i = 0; i < 6 ; i++) { 24 int a = (i*i + i + 2) / 2; 25 resultStr += a + " "; 26 } 27 return resultStr; 28 } 29}
追記2
すみません。詳細な説明なしにコードを提示してしまいました。
詳細な説明は se_hatena2525 さんにお任せします。
疑問点は質問してください。
追記3
(i*i + i + 2) / 2 ←このようにシンプルにまとめる方法があったのかと感心しました。
i*(i+1) / 2 + 1 と書いても同じです。
1 + (1/2)(nn) + (1/2)*n と書くと間違いです。
1/2 は整数の割り算なので、結果は 0.5 ではなく 0 だからです。
1 + n*n/2 + n/2 と書くのも間違いです。
n が奇数の時、割り切れず、端数の 0.5 が切り捨てられるからです。
いまいち、どういうことが行われてるのか理解できていません。
a += d; d++; が分からないのですか?
a = a + d;
d = d + 1;
と書き換えたら分かりますか?
数列の次の項 a は現在の項 a に公差 d を加えたものであり、
公差 d は 1 増やします。階差数列なので。
投稿2020/04/26 18:13
編集2020/04/27 18:54総合スコア8224
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/26 23:30
2020/04/26 23:44
2020/04/26 23:56
2020/04/27 00:02
2020/04/27 15:23 編集
2020/04/28 00:14 編集
0
まず、どういう計算式を使えばその数値、数列を出すことができるでしょうか。
まずはそこから考えていきましょう。
投稿2020/04/26 06:41
総合スコア88042
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/26 14:24
2020/04/26 14:54
2020/04/26 15:12
2020/04/26 15:23
2020/04/26 15:32
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。