Как работает рекурсия в функции?
Можете, пожалуйста, объяснить как работает данная рекурсия (функция calculatingFunction). Буду очень благодарен!
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
long long calculatingFunction(int* arrayPointer, int arrayBegin, int arrayEnd){
if(arrayEnd-arrayBegin==0){
return arrayPointer[arrayBegin];
}
else if(arrayEnd-arrayBegin==1){
return arrayPointer[arrayBegin]*arrayPointer[arrayEnd];
}
else{
long long first = calculatingFunction(arrayPointer, arrayBegin, (arrayEnd+arrayBegin)/2 );
long long second = calculatingFunction(arrayPointer, ((arrayEnd+arrayBegin)/2)+1, arrayEnd);
return first*second;
}
}
int main() {
srand(time(NULL));
int *arrayPointer, arraySize;
printf("Write array size, which you want to parse into product \n");
scanf("%d", &arraySize);
arrayPointer = malloc(sizeof(int) * arraySize);
for (int i = 0; i < arraySize; i++) {
arrayPointer[i] = rand() % 101;
}
printf("Your array:\n");
for (int i = 0; i < arraySize; i++) {
printf("%d ", arrayPointer[i]);
}
printf("\n");
long long resultOfCalculating = calculatingFunction(arrayPointer, 0, arraySize - 1);
printf("Result of calculating product is:\n%lld", resultOfCalculating);
free(arrayPointer);
}
Источник: Stack Overflow на русском