先举三反一,再举一反三,学习就应该是这样,先模仿,再改进,最后实现自己的创意! –小甲鱼论坛
递归 调用函数本身 设置递归结束条件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 // // Created by Luenci on 2019/10/11. // #include <stdio.h> void fun(void); long fact(int num); void fun(void){ static int count = 10; printf("Hi\n"); if (count--){ fun(); } } long fact(int num){ long result; if(num > 0){ result = num * fact(num-1); } else{ result = 1; } return result; } int main(void){ // fun(); int num; long re; printf("请输入您要求阶乘的数:"); scanf("%d", &num); re = fact(num); printf("%d", re); return 0; } 汉罗塔 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include<stdio.h> void hanoi(int n, char x, char y, char z); void hanoi(int n, char x, char y, char z){ if(n==1){ printf("%c --> %c \n", x,z); } else{ // 将前n-1个圆盘借助z移动到y hanoi(n-1, x, z, y); printf("%c --> %c \n", x,z); // 将前n-1个圆盘借助x移动到z hanoi(n-1, y, x, z); } } int main(void){ int n; printf("请输入您的层数:"); scanf("%d", &n); hanoi(n, 'X', 'Y', 'Z'); return 0; } 快速排序 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 // // Created by Luenci on 2019/10/11. // #include <stdio.h> void quick_sort(int array[], int left, int right); void quick_sort(int array[], int left, int right) { int i = left, j = right; int temp; // 交换的中间变量 int pivot; // 基准点 pivot = array[(left + right) / 2]; while (i <= j) { // 从右往左找到大于等于基准点的元素 while (array[i] < pivot) { i++; } // 从右到左找到小于等于基准点的元素 while (array[j] > pivot) { j--; } // 如果 i <= j,则互换 if (i <= j) { temp = array[i]; array[i] = array[j]; array[j] = temp; i++; j++; } } if (left < j) { quick_sort(array, left, j); } if (i < right) { quick_sort(array, i, right); } } int main(void){ int array[] = {73, 108, 111, 101, 78, 109, 66, 48, 88, 135}; int i, length; // 计算数组的长度 length = sizeof(array) / sizeof(array[0]); quick_sort(array, 0, length-1); printf("排序后的结果是:"); for (i = 0; i < length; i++){ printf("%d ,", array[i]); } putchar('\n'); return 0; } ...