私は再帰を使って配列の中で最大のdoubleを返そうとしています。配列内で最大のdoubleを返します
szは配列内の要素の数です。
startは、現在の呼び出しを開始する配列のインデックスです。
これはこれまで私が行ってきたことです。 'return max'行にヒットしたときに関数が終了しないのはなぜですか?
double arrayMax (double arr[], int sz, int start) {
double max;
if (start == sz) {
return max;
} else {
if (arr[start] > max) {
max = arr[start];
}
arrayMax(arr, sz, start+1);
}
return max;
}
関数呼び出しは 'return max;'行に達したときに終了します。 – immibis
return maxをヒットすると、arrayMaxをもう一度呼び出してから、リストの中の最大のdoubleの代わりにリストの最初の要素を返します。 – stumpylumpy
OMG、なぜ誰かがこれに対して再帰を使いたいのですか?これが学校の宿題(1つのように聞こえる)であれば、これはコード作成方法を教えてくれるわけではありません。これはコード作成の仕方を教えてくれるでしょう。スタックオーバーフローについて聞いたことがありますか?大きな配列でこの「アルゴリズム」を試してみると、1つが表示されます。 :) –