Функция "fib" должна возвращать 2 значения.
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
void fib(int n, int * ra, int * rb) {
assert(n>=0);
if (n>1) {
int ya,yb;
fib (n-1, &ya, &yb);
*rb = ya;
*ra = ya + yb;
} else if (n==1) {
*ra = 1;
*rb = 0;
} else {
*ra = 0;
*rb = 0;
}
}
int main(int argc, const char * argv[]) {
int n;
printf("the nth number: ");
scanf("%d",&n);
int ya,yb;
fib(n, &ya, &yb);
printf("%d \n", ya);
return 0;
}