我應該習慣使用fork,並且我看到一個練習,表示使用fork調用來搜索索引爲0到15的數組。我們假設每個過程都可以只做兩件事......(1)檢查一個數組是否爲長度爲1,並且(2)比較數組中的單個元素與正在搜索的數量。基本上我通過它一個數字,它應該做有限數量的叉子並返回該數字的索引。這裏是我的代碼..用叉子搜索C
#define MAXINDEX 16
int forkSearch(int a[], int search, int start, int end){
if(start == end){
if(*(a + end) == search){
return end;
}
}
else{
pid_t child = fork();
if(child == 0) return forkSearch(a, search, start, end/2);
else return forkSearch(a, search, (start + end)/2, end);
}
}
int main(int argc, char* argv[]){
int searchArray[MAXINDEX] = {1, 12, 11, 5, 10, 6, 4, 9, 13, 2, 8, 14, 3,\
15, 7};
printf("Should be 1. Index of 12 = %d\n", forkSearch(searchArray,
12, 0, MAXINDEX));
return 0;
}
一切都在這個快速爆炸計劃的回報似乎是1,10,11,或13爲什麼沒有這方面的工作像它應該。
不是你的解決方案,但你打算用15個值初始化16個int的數組嗎? – WhozCraig
「我應該對叉子感到舒服」 - 試試勺子,並小心使用刀子:-) –
不應該讓您的子程序搜索'(a,search,start,(start + end)/ 2 )'而不是'(a,search,start,end/2)'?這兩個只相當於start == 0時,這並不總是這樣的... – cHao