Bu örnek C Console application kodu ile recursion function ve for döngülerini kullanarak belli işlemler yapılmıştır.
Program sırası ile önce kullanıcıdan kaç adet sayı değeri gireceğini ve bu değerleri istiyor sonra ekrana sırası ile, tersten ve toplamını yazıyor. Ve son olarakta recursion bir function’ı çağırarak sayının max değerini buluyor. Kodu incelediğinizde daha net anlayacaksınız.
# include
# include
# include
float calculateSum(float *, int);
void reverseArray(float*,int, int);
void printArray(float *, int);
float findMax(float *, int);
float result;
int max,i;
float findmax;
int main(int argc, char *argv[]) {
float arraySum;
float *myarray;
int i,n,e;
printf(“Input number of elements”);
scanf(“%d”, &n);
myarray=(float *) malloc(sizeof(float *)*n);
for (i = 0; i < n; i++){ printf(“Input elements”); scanf(“%f”, &myarray[i]); } arraySum=calculateSum(myarray,n); printf(“Sum of array is : %f\n”,arraySum); printf(“Original array:”); printArray(myarray,n); reverseArray(myarray,n,n); printf(“Reverse of array is : “); printArray(myarray,n); i=1; max=myarray[0]; // it is calling to the findmax function findmax=findMax(myarray,n); free(myarray); system(“PAUSE”); } float calculateSum(float *arr, int size){ if (size == 0) //base case return 0; else { result=calculateSum(arr,size-1); result=result + arr[size-1]; return result;} } void reverseArray(float *arr, int size, int m) { float tmp; int idx; idx=m – size; if(m/2>size-1) return;
else{
tmp=arr[size-1];
arr[size-1]=arr[idx];
arr[idx]=tmp;
reverseArray(arr,size-1,m);
}
}
void printArray(float *arr, int size) {
int i;
for (i = 0; i < size; i++){ printf(“%f\n”,arr[i]); } puts(“”); } float findMax(float *arr, int size) { // This is exit condition for recoursion. it writes to screen max value if comparison function finished. if (i == size) { printf(“Maximum value is : %d\n”,max); return max; } else { //If it can find a larger value than max values variable, it makes these value equal to max variable and then i variable is increased one time. And than function recall itself if(arr[i] > max)
{ max = arr[i];
i++;
findmax=findMax(arr,size);
}
else
// If it couldn’t find any larger value than max values, it
increases one times i variable and than function recall itself
{ i++;
findmax=findMax(arr,size);
}
}
}