Javaでのプログラミングで困ってます・・・


質問:Javaでのプログラミングで困ってます。 「再帰的なデータを使って学生の成績を管理したい。三人分の、 氏名、学番、英語、数学、国語の成績を管理できる再帰的データ構造用のプログラム を作成せよ」です困っているのは、「再帰的データ構造」が何なのか?と、 for文の使い方が違うので、三人目のデータしか出力されないことです。 どなたかアドバイス等お願い致します。 import java.io.*; class Student{ String name; //氏名 int num; //学番 int eigo; //英語 int suugaku; //数学 int kokugo; //国語 } class Kadai04{ public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); Student x = new Student(); //xという箱を作成 String line; for(int i=0 ; i<3 ; i++){ System.out.print("氏名は"); x.name = (br.readLine()); System.out.print("学番は"); x.num = Integer.parseInt(br.readLine()); System.out.print("英語="); x.eigo = Integer.parseInt(br.readLine()); System.out.print("数学は"); x.suugaku = Integer.parseInt(br.readLine()); System.out.print("国語は"); x.kokugo = Integer.parseInt(br.readLine()); } System.out.println("---------------------------"); for(int j=0 ; j<3 ; j++){ System.out.println("氏名は"+x.name ); System.out.println("学番は"+x.num ); System.out.println("英語="+x.eigo); System.out.println("数学は"+x.suugaku); System.out.println("国語は"+x.kokugo); System.out.println(" "); } } }


回答:再帰的なものって、一般には(同一構造の)入れ子構造を言います。典型例が樹状(ツリー)構造 なので「再帰的なデータを使って学生の成績を管理したい。」っていう題意が【意味不明】です。 学生の成績自体はどう考えても再帰構造を普通には持ち得ません。 出題者と直接会話した方が建設的かと。 【補足】 別の方が「再帰的なデータ構造でイチバン単純なのは単方向リスト」とおっしゃっています。 形式的にはその言明は正しいですが、意味的には問題があります。 樹状構造は線形構造では【ない】ですが、単方向リストは線形構造で【も】あります。 【補足2】 他の方々が言及されている再帰呼出しですが、再帰構造を持ったデータの処理には 最適の方法です。単方向リストはforループでも処理できますが、形式的には再帰構造に なっているので、再帰呼出しででも処理できます。ただ、この場合、再帰呼出しの メリットはほとんど実感できません。Yahoo知恵袋より引用

http://www.georgiehale.com/cat3/page1

データ構造ってなんですか?・・・


質問:データ構造ってなんですか?


回答:あるプログラムを実現(実装)しようと思ったら、2つのことを考えなければいけません。 1つはデータ構造 もう1つはアルゴリズムです。 アルゴリズムは、どのようにして「自分の実行したい内容を実行させる」かという実現方法、例えばソートの方法で「クイックソート」などです。 そして、データ構造とは、データをどのようにして「メモリに記録したり、次のデータにアクセスできる仕組み」を作るか、ということで例えば、「線形リスト」とか、「双方向リスト」なんかは典型的な「データ構造」というものです。Yahoo知恵袋より引用

http://www.georgiehale.com/cat1/page3

あらかじめ用意されたメニューの中か・・・


質問:あらかじめ用意されたメニューの中から、最も低予算で一日の所要栄養摂取量を満たす組み合わせを抽出するアルゴリズムを求めています。総当りではなく、効率的に最適解を得る理論はないでしょうか。


回答:ナップサック問題ですかね。いろんな解法がありますよ。各種最適化手法で解けます。例えば、遺伝的アルゴリズムです。Yahoo知恵袋より引用

http://www.georgiehale.com/cat6/