题意描述:
输入n和n个整数,以与输入顺序相反的顺序输出这n个整数。要求不使用数组,而使用递归函数实现。
递归函数实现过程如下:
void inverse(int n)
{
if(n >1)
{
(1) 读入一个整数,存入num;
(2) 将后面的n-1个数逆序输出: inverse(n-1);
(3) 输出num;
}
if( n == 1) 直接输出num;
}
解题思路:
先输入一个整数n,编写递归函数,分为n=1或n>1两种情况:如果大于1,先读入一个整数存入num,然后再利用递归函数读入n-1个数,最后n=1时直接将读入的整数输出。
代码实现:
1 #include<stdio.h> 2 void inverse(int n) 3 { int num,a; 4 if(n==1) 5 { 6 scanf("%d",&num); 7 printf("%d ",num); 8 } 9 if(n>1) 10 { 11 scanf("%d",&a); 12 num=a; 13 inverse(n-1); 14 printf("%d ",num); 15 } 16 } 17 int main() 18 { 19 int n,i; 20 scanf("%d",&n); 21 inverse(n); 22 return 0; 23 }
易错分析:
递归思想不理解,题意不能准确分析。