#include <stdio.h>
int res[5] = {}; //外部变量 , 把每一位作为数组元素进行存储
int *p = res;
int main(){
int num = 12345;
void ser(int);//分别输出每一位数字
ser(num);
printf("\n");
p = res + 4; //指针置于数组末尾
for(int i=0; i<sizeof(res)/sizeof(res[0]); i++){ //逆序输出
printf("%d ", *p--);
}
return 0;
}
void ser(int number){
if(number > 9){
ser(number/10); //递归
}
printf("%d ", number % 10); //顺序输出
*p = (int)number % 10;
p++;
}
/*
程序的输出顺序为 10 -> 8 -> 6 -> 4 -> 2
递归步骤解释
1: 第一次执行ser函数,numbser = 12345判断数字大于9,将int(1234)再次执行函数 ps: (int)/(int) 结果为int
2: 待执行ser函数后,输出结果个位数 12345 % 10 = 5
3: 第二次执行ser函数....类比步骤1
4: 待递归执行ser函数,类比步骤2,输出十位个数 1234 % 10 = 4
5: 类比步骤1
6: 类比步骤2,输出百位个数 123 % 10 = 3
7: 类比步骤1
8: 类比步骤2,输出千位 12 % 10 = 2
9: 类比步骤1
10: number值为1,不再递归,直接输出万位 1 % 10 = 1
*/如有帮助,请点赞支持原创QVQ