int f(int a[], int size) {
if (size == 1)
return arr[0];
size--;
return f((arr + (arr[0] > a[size])), size);
}
我試圖返回最小值的索引。上面的代碼返回最小值的VALUE,但是我無法返回索引,任何人都可以幫忙嗎?此外,我只允許將2個參數傳遞給函數,數組和數組的大小。迴歸min索引遞歸
int f(int a[], int size) {
if (size == 1)
return arr[0];
size--;
return f((arr + (arr[0] > a[size])), size);
}
我試圖返回最小值的索引。上面的代碼返回最小值的VALUE,但是我無法返回索引,任何人都可以幫忙嗎?此外,我只允許將2個參數傳遞給函數,數組和數組的大小。迴歸min索引遞歸
像這樣的東西可能會工作:
size_t f(int a[], size_t low_index, size_t high_index) {
if (low_index == high_index) {
return low_index;
}
if (arr[low_index] > arr[high_index]) {
low_index++;
} else {
high_index--;
}
return f(a, low_index, high_index);
}
你會先f(a, 0, size-1)
調用它。
這麼說,我不知道爲什麼你要當它似乎更容易做到在一個循環做到這一點遞歸:
size_t f(int a[], size_t size) {
size_t min_index = 0;
int min_value = a[0];
for (size_t i = 1; i < size; ++i) {
if (a[i] < min_value) {
min_value = a[i];
min_index = i;
}
}
return min_index;
}
這是什麼語言? C? C++? – Paul
如果函數使用C或C++(或基於C或C++的任何語言),那麼您無法真正返回多個值。您可以將其作爲* output *參數,或者使用* pair *或* tuple *或* structure *或甚至一個*數組* *(在某些語言中)作爲返回值「返回」。具體怎麼做取決於你對我們一無所知的語言。 –
或者等待,你是否想將函數改爲* only *返回索引,而不是值? –