//Exercise 1 int binCoef(int n, int k) { if (k == 0 || k == n) return 1; else return binCoef(n - 1, k - 1) + binCoef(n - 1, k); } //Exercise 2 void decToBin(int n) { if (n > 1) { decToBin(n / 2); } printf("%d", n % 2); } //Exercise 3, call: hanoiTow(n, 'A', 'B', 'C') void hanoiTow(int n, char src, char aux, char dst) { if (n == 1) { printf("Move disk 1 from %c to %c\n", src, dst); } else { hanoiTow(n - 1, src, dst, aux); printf("Move disk %d from %c to %c\n", n, src, dst); hanoiTow(n - 1, aux, src, dst); } } //Exercise 4, call: int res = binarySearch(arr, 0, size - 1, target) int binarySearch(int arr[], int left, int right, int target) { if (left > right) return -1; else { int mid = (left + right) / 2; if (arr[mid] == target) return mid; else if (arr[mid] > target) return binarySearch(arr, left, mid - 1, target); else return binarySearch(arr, mid + 1, right, target); } } //Exercise 5, call: int res = palindrom(word, 0, length - 1); int palindrom(char str[], int left, int right) { if (left >= right) return 1; else return (str[left] == str[right]) && palindrom(str, left + 1, right - 1); } //Exercise 6, call: removeDup(input, output, 0, 0) //Les pointeurs vont ĂȘtre introduits la semaine prochaine void removeDup(char *input, char *output, int idxIn, int idxOut) { if (input[idxIn] == '\0') output[idxOut] = '\0'; else { if (idxIn == 0 || input[idxIn] != input[idxIn - 1]) { output[idxOut] = input[idxIn]; removeDup(input, output, idxIn + 1, idxOut + 1); } else removeDup(input, output, idxIn + 1, idxOut); } }