Лекция 03 - Рекурсия
Качена е презентацията от лекцията за рекурсивни функции в С.
Задачи от час
// factorial.c
#include<stdio.h>
int fact(int num);
int main() {
unsigned long long result = fact(20);
printf("fact(20) = %llu\n", result);
return 0;
}
int fact(int num) {
if (num == 1) {
return 1;
}
return num * fact(num - 1);
}
// max_in_array.c
#include<stdio.h>
int max(int[], int size);
int main() {
int arr[] = {1, 13, 20, 7, 16, 3};
printf("max is = %d\n", max(arr, 6));
return 0;
}
int max(int arr[], int size) {
if (size == 1) {
return arr[0];
}
int max_ = max(arr, size - 1);
printf("DBG: %d > %d\n", arr[size - 1], max_);
if (arr[size - 1] > max_) {
return arr[size - 1];
} else {
return max_;
}
// Short version
// return arr[size - 1] > max_ ? arr[size - 1] : max_;
}
// digits_sum_non_recursive.c
#include<stdio.h>
int main() {
int sum = 0;
int number = 2356;
while(number) { // or number == 0
int digit = number % 10;
number /= 10; // same as number = number / 10
sum += digit; // same as sum = sum + digit
}
printf("sum of digits of 2356 = %d\n", sum);
return 0;
}