• ベストアンサー

Javaで再帰アルゴリズムを作ることは可能でしょか?

こんにちは。 私は今Javaを定期的に勉強しているのですが、わからないことが発生してしまい困っています。プログラミングの出来る方教えてください。 内容は再帰についてです。ある条件が整わない限りずっと再帰させるというプログラムを作りたいんですが、わかりません。 ↑文が変かな? 条件がそろわない限り同じ仕事をやってもらう。 これの方がわかりやすいかな? グーグルで「Java 再帰」と調べてもまったく理解しやすいサイトはないので、ここに投稿させてもらいました。ぜひわかりやすく教えてください。もしくはサイトを教えてください。そうすれば自力でやります。

質問者が選んだベストアンサー

  • ベストアンサー
  • ttyp03
  • ベストアンサー率28% (277/960)
回答No.3

> 「互換性のない型」 > 検出値 int > 期待値 boolean boolean型を使ってほしいのにint型を使われた、ということです。 ですので while(true) でいいんじゃないですかね。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • keroro001
  • ベストアンサー率23% (71/304)
回答No.4

#1です すみません!最近C++とJAVA併用しててごっちゃになってますわ・・・ #3の方が言うように、trueにしてください。すみませんです。 おわびに良く使ってるサイトを・・・ http://www.wakhok.ac.jp/~tatsuo/kougi99/ http://java-house.jp/ml/ http://sdc.sun.co.jp/java/index.html http://java.sun.com/j2se/1.4/ja/docs/ja/index.html

すると、全ての回答が全文表示されます。
  • ttyp03
  • ベストアンサー率28% (277/960)
回答No.2

Javaということにとらわれなくて良いかと思います。 ちょっとJavaの構文を忘れたのでCで書きますが、基本的には自分自身を呼び出せばいいだけです。 例)saiki関数を100回呼び出したら抜けます。 main() {  saiki( 0 ); } saiki( int i ) {  i++;  if( i < 100 ){   saiki( i );  } } 再帰呼び出しで注意しなければいけないのは、必ず終わりがないといけないということです。 そうしないとメモリをガンガン食ってしまいます。 例えばランダムで100が出たら終了、なんて条件はダメですね。 100が出ない限り何度も呼ばれてしまうので。 > 条件がそろわない限り同じ仕事をやってもらう。 この文面だけ見ると単なる無限ループでいいのではないかと思ってしまうのですが… 条件が揃ったらbreakする。 再帰呼び出しは例えばフォルダ構造をルートから辿っていくときとかに使いますね。 1フォルダ分の処理を関数化し、自分の中にフォルダがあればそのフォルダをパラメータにまた自分を呼び出す、など。 自分がやりたい処理がホントに再帰呼び出しが必要なのかを吟味した方がいいですね。

すると、全ての回答が全文表示されます。
  • keroro001
  • ベストアンサー率23% (71/304)
回答No.1

私の理解不足でしたらごめんなさい!! 質問の内容が再帰を必要としないように思えるんですが・・・ while(1) { 繰り返したい作業(); if(条件が整った) { break; } } ではいかんのですか? 再帰を無理やり使うとすると・・・ main() { 繰り返したい作業(); } 繰り返したい作業() { 作業A; 作業B; if(条件が整った) { 繰り返したい作業(); } } とかなるんでしょうか? フローチャートまではいかんでも、コーディングを日本語レベルで 書いてみると頭が整理されますよ~

Jack3
質問者

補足

while(1)を使おうとすると、 「互換性のない型」 検出値 int 期待値 boolean と出てコンパイルが出来ないのですが・・・ これはいったい?

すると、全ての回答が全文表示されます。