C语言递归输入输出数字
#include <stdio.h>
#define N 6
void input(int *p,int n);
void ouput(int *p,int n);
int main(){
int a[N];
input(a,N);
ouput(a,N);
return 0;
}
void input(int *p,int n){
if(n==0) return;
scanf("%d",p);
input(++p,--n);
}
void ouput(int *p,int n){
//while(n--){
// printf("%d ",*p++);
//}
if(n==0) return;
printf("%d ",*p);
ouput(++p,--n);
}
废话:又好久没碰C了,看到有人问输入几个数字的问题,想了下怎么输入n个数字。
循环写得太多了,为增加一点难度,想用递归写。
把输入一行数分成,输入单个数,要递归实现要保存数组下一个位置的指针,总数减1
input(++p,--n)
起始p指向a(第一个元素),n为数组元素总数
每次调用让 p+1,n-1
当 n=0 时,即已经输入n次时,返回函数
输出也以同样方式递归调用。

浙公网安备 33010602011771号