题目描述
输入n和n个整数,以与输入顺序相反的顺序输出这n个整数。要求不使用数组,而使用递归函数实现。
输入
输入有两行,第一行是一个正整数n,第二行有n个整数,整数之间由空格隔开。
输出
输出n个整数,顺序与输入顺序相反,每个整数后有一个空格。
样例输入
5
11 22 33 44 55
样例输出
55 44 33 22 11
AC:
#include <stdio.h>
#include <stdlib.h>
void inverse(int n)
{
int s;
scanf("%d",&s);
if(n>1)
{
inverse(n-1); /*将数储存,当遇到出口后,才会进行下一步输出。正好满足逆序输出的要求。*/
printf("%d ",s);
}
if(n==1) //递归出口
{
printf("%d ",s);
}
}
int main()
{
int n;
scanf("%d",&n);
inverse(n);
return 0;
}
这道题非常适合深入的理解递归函数以及函数的调用。递归其实就是自己调用自己,只有调用的函数结束后才会进行下一步的程序。
比如上面的代码,当n!=1时是不会执行 inverse(n-1);下面的那一行输出的只有当n==1之后才会回调inverse(2)那时候才会输出倒数第二个数字,之后接着回调直到输出全部数字