1 #include <stdio.h> 2 //逆序打印数组所有元素,四个写法 3 void func1_1(int* p,int i)//每个层递归的功能:打印第i下标上的元素(前需打印i+1下标上的元素)。 4 //多层合起来的功能就是打印了第a[0]-a[9]元素的逆序 5 { 6 if(i == 9) 7 printf("%d ",p[i]); 8 else//普通情况递推公式,打印i元素之前,得先打印i+1的元素 9 { 10 func1_1(p,i+1); 11 printf("%d ",p[i]); 12 } 13 } 14 void func1_2(int* p,int i)//功能:打印第a[0]-a[9]元素的逆序 15 { 16 if(i != 9) 17 { 18 func1_2(p,i+1); 19 } 20 printf("%d ",p[i]); 21 22 } 23 24 void func2_1(int *p, int i, int len) 25 { 26 if(i == len-1) 27 { 28 printf("%d ",p[i]); 29 } 30 else 31 { 32 func2_1(p,i+1,len); 33 printf("%d ",p[i]); 34 } 35 } 36 37 void func2_2(int *p, int i, int len) 38 { 39 if(i != len-1) 40 { 41 func2_1(p,i+1,len); 42 } 43 printf("%d ",p[i]); 44 } 45 46 int main(void) 47 { 48 int arr[10] = {0,1,2,3,4,5,6,7,8,9}; 49 func1_1(arr,0); 50 func1_2(arr,0); 51 func2_1(arr,0,10); 52 func2_2(arr,0,10); 53 return 0; 54 }