2014年03月04日

美しいコード@CodeIQ

コード美人の解答。
問題はこちらです
1.ループ処理を全て再帰で再現する
2.メソッドは1つの機能しか持たせない
3.コメント無しでも何をしているのかわかる
4.汎用性を持たせる(基準値3や100個までをパラメータ化する)
を全て満たそうとしたら、こんなに読みにくいコードになりました。
人生じゃなかった、羊生何があるかわかりません!


package choco.bar;

import java.util.ArrayList;
import java.util.List;

public class Main {
private List numList=new ArrayList();
private int powNum;
private int maxCnt;
private Main(int powNum,int maxCnt){
this.powNum=powNum;
this.maxCnt=maxCnt;
}

private Main makeData(int nowNum){
int maxSize=numList.size();
numList.add(nowNum);
add(0,nowNum,maxSize);
if(numList.size()<maxCnt)makeData(nowNum*powNum);
return this;
}
private void add(int i,int nowNum,int maxSize){
if(i<maxSize){
numList.add(nowNum+numList.get(i));
add(++i,nowNum,maxSize);
}
}

private void println(int i){
System.out.println(numList.get(i));
if(++i<maxCnt){
println(i);
}
}
public static void main(String[] args) {
new Main(3,100).makeData(1).println(0);
}

}
posted by バー at 07:55| Comment(0) | TrackBack(0) | CodeIQ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。