質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

解決済

フィボナッチ文字列(ABを使ったもの)

sui11
sui11

総合スコア1

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

2回答

-2評価

0クリップ

346閲覧

投稿2022/01/19 05:02

編集2022/01/19 17:52

フィボナッチ文字列https://www.iss.is.tohoku.ac.jp/stringology/Strings/Fibonacci/index.html

Fib1=b
Fib2=a
Fib3=ab
Fib4=aba
Fib5=abaab
Fib6=abaababa
Fib7=abaababaabaab
Fib8=abaababaabaababaababa
Fib9=abaababaabaababaababaabaababaabaab
Fib10=abaababaabaababaababaabaababaabaababaababaabaababaababa
Fibn は, Fibn−1 に対して次の規則に従った変換を行うことにより生成することもできる. ただし, Pd0=a とする.
a→ab
b→a 
〇javaのStringBufferクラスと上の規則使って上記の表を作りたいです。Fib=4以降が間違っているようです。
2日考えてわからないですが理解したいです。解説していただきたいです。(fib1 = Aで作りたいです)
〇追記:具体的にはfor文とreplace()等を使って繰り返し変換し、 表を作りたいというもので、 Fib4=ABAABとなるようにしたいのですがうまくいきません。 期待する結果になるにはFib4の場合 Fib3=ABAの1番目のAをAB ,2番目のBをA,3番目のAをABに変換するのですがFib4=ABAAとなっており3番目の変換がされていないと思います。 最終的に、一つの文字列に対して2種類の変換を複数回を行うfor文の作り方がわからないです。なのでそのアドバイスをいただきたいです。
java

考えたコード public class fibw { public static void main(String[] args){ StringBuffer f = new StringBuffer("B"); for(int i = 1; i<=10;++i){ for(int x=0;x<=f.length()-1;++x){ char chAB = f.charAt(x); if(chAB == 'A')f.replace(x,x+1,"AB");x=x+1; if(chAB == 'B')f.replace(x-1,x,"A"); } System.out.println("Fib"+i+"= "+f); } } } 実行結果 Fib1= A Fib2= AB Fib3= ABA Fib4= ABAA Fib5= ABAAAB Fib6= ABAAABABA Fib7= ABAAABABAAAA Fib8= ABAAABABAAAAABABAB Fib9= ABAAABABAAAAABABABABAAAAA Fib10= ABAAABABAAAAABABABABAAAAAAAAABABABAB

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

jimbe

2022/01/19 05:19

>2日考えてわからない 何をどのように2日考えて、結局何が分からないのでしょうか。 "xxという用語が分からない", "xxという命令がどう動作しているのか分からない"等、具体的にお願いします。 >解説していただきたい 何を解説するのでしょうか。 フィボナッチ文字列ならお分かりでしょうし、ご自身で作ったコードならお分かりのはずですが…。
Zuishin

2022/01/19 06:07 編集

replace なんか使ってるからじゃないですか? Fib4 は ABAAB が正解ですが、これは Fib3(ABA) + Fib2(AB) で求められ、replace を使う余地などありません。 アルゴリズムは数字を使ったものと全く同じものでできます。 StringBuffer ではなく、ArrayList を使うと良いでしょう。
sui11

2022/01/19 06:22

失礼しました。具体的にはfor文とreplace()等を使って繰り返し変換し、 表を作りたいというもので、 Fib4=ABAABとなるようにしたいのですがうまくいきません。 期待する結果になるにはFib4の場合 Fib3=ABAの1番目のAをAB ,2番目のBをA,3番目のAをABに変換するのですがFib4=ABAAとなっており3番目の変換がされていないと思います。 最終的に、一つの文字列に対して2種類の変換を複数回を行うfor文の作り方がわからないです。なのでそのアドバイスをいただきたいです。
sui11

2022/01/19 06:23

zuishinさんありがとうございます。試してみます。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。