Вычисление чисел фибоначи, где каждый отдельный уровень рекурсии вычисляется в отдельном процессе
Надо рекурсивно посчитать чиста фибоначи, где каждый отдельный уровень рекурсии выполняется в отдельном процессе. Я написал программу, во время ее выполнения создается много процессов, на 24+ элементе( fib(24) и т.д.) почему-то не получается создать новый процесс, пишет, что pid < 0. Подскажите в чем проблемма и как ее решить.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
long fibonacci(int num) {
if(num == 0) {
return 0;
} else if(num == 1) {
return 1;
} else {
pid_t pid = fork();
if(pid < 0) {
return 0;
} else if(pid == 0) {
long res = fibonacci(num-2);
exit(res);
} else {
long parentRes = fibonacci(num-1);
int status;
wait(&status);
long res = WEXITSTATUS(status);
return (parentRes + res);
}
}
}
int main(int argc, char* argv[]) {
int num;
scanf("%d", &num);
printf("fib[%d] = %d\n", num, fibonacci(num));
return 0;
}