私はこのコードをよく理解していません。たとえば、n = 5
の場合、Cで配列の最小要素を再帰的に見つけるこのコードを説明できる人はいますか?
array[5] = {13, 27, 78, 42, 69}
誰かが説明してください。
私が理解しているのは、n = 1
、それが最も低いことです。 しかし、n = 5
の場合は、4番目のインデックスを4番目のインデックスと比較して最小のものを確認し、最小のものを返し、4番目のインデックスを3番目のインデックスと比較して、一番小さい?私は混乱しています。
int min(int a, int b)
{
return (a < b) ? a: b;
}
// Recursively find the minimum element in an array, n is the length of the
// array, which you assume is at least 1.
int find_min(int *array, int n)
{
if(n == 1)
return array[0];
return min(array[n - 1], find_min(array, n - 1));
}
再帰的呼び出しで、配列の最後に到達するまでfind_min recurse呼び出しは戻りません。コールトレースを書き出すと、何が起きているのかがわかります。 –
[再帰を伴う配列内の最小数を見つける]の可能な複製?(http://stackoverflow.com/questions/1735550/find-the-minimum-number-in-an-array-with-recursion) – Prune