前提・実現したいこと
processingで最大値を求めるプログラムを作っています。具体的な内容は、まず配列の置き場としてa[]とします。次にランダムに100のなかから10個、数を生成します。配列の最初の値をiとし、最後の値をjとします。つまり、a[i]からa[j]の最大値を求めます。もしiとjが同じ値なら、a[i]を返します。そうでないなら、つぎのようなここからが言葉では説明できるのですが、プログラムが完成できません。まず、kという値を定義します。k=i+(j-i)/2です。つまり、配列のちょうど真ん中です。そして、⭐kより前(a[i]~a[k])の最大値の値とkより後(a[k]~a[j])の最大値の値をそれぞれ求め⭐、そのそれぞれの値を比較し大きいほうの値を返します(max())。⭐で囲まれた部分が分かりません。プログラムでいうと最後のreturn(max());という部分です。解答お待ちしております。
発生している問題・エラーメッセージ
プログラムが完成していないので、エラーメッセージはありません。
該当のソースコード
processing
1int D[]; 2int N=10; 3 4void setup(){ 5 D=new int [N]; 6 for(int i=0;i<N;i++){ D[i]=(int)random(100); } 7 noLoop(); 8} 9 10void draw() 11{ 12 println("----- before -----"); println(D); 13 println("Mqx value is "+FindMax(D,0,N-1)); 14} 15 16int FindMax(int a[], int i, int j){ 17 int k; 18 if(i==j){ 19 return(a[i]); 20 }else{ 21 k=i+(j-i)/2; 22 return(max()); 23 } 24 25 26} 27 28
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー