int firstPositive(int A[], int n) { if(n == 0) return 0; } else { int x = firstPositive(A,n-1); if(x != 0) { return x; } else if(A[n-1] > 0) { return A[n-1]; } else { return 0; } } }
Another approach is to create a helper function.
// firstPositiveHelp(A,i,n) yields // the first positive number in list // A[0], ..., A[n-1]. If none of thos // are positive, it returns 0. int firstPositiveHelp(int A[], int i, int n) { if(i >= n) { return 0; } else if(A[i] > 0) { return A[i]; } else { return firstPositiveHelp(A, i+1, n); } } int firstPositive(int A[], int n) { return firstPositiveHelp(A, 0, n); }