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次时,返回函数

输出也以同样方式递归调用。

posted @ 2021-02-02 17:09  windin  阅读(375)  评论(0编辑  收藏  举报