Вычисление чисел фибоначи, где каждый отдельный уровень рекурсии вычисляется в отдельном процессе

Надо рекурсивно посчитать чиста фибоначи, где каждый отдельный уровень рекурсии выполняется в отдельном процессе. Я написал программу, во время ее выполнения создается много процессов, на 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;
}

Ответы (0 шт):