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\n",p[i]);
8 else//普通情况递推公式,打印i元素之前,得先打印i+1的元素
9 {
10 func1_1(p,i+1);
11 printf("%d\n",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\n",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\n",p[i]);
29 }
30 else
31 {
32 func2_1(p,i+1,len);
33 printf("%d\n",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\n",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 }