算法提高----递归倒置字符数组

问题描述
  完成一个递归程序,倒置字符数组。并打印实现过程
  递归逻辑为:
  当字符长度等于1时,直接返回
  否则,调换首尾两个字符,在递归地倒置字符数组的剩下部分
输入格式
  字符数组长度及该数组
输出格式
  在求解过程中,打印字符数组的变化情况。
  最后空一行,在程序结尾处打印倒置后该数组的各个元素。
样例输入
Sample 1
5 abcde
Sample 2
1 a

样例输出

Sample 1
ebcda
edcba
edcba
Sample 2
a

 

#include <stdio.h>
#include <stdlib.h> 

void swap(char *str1,int start,int end){
    char temp;
    temp = str1[start];
    str1[start] = str1[end];
    str1[end] = temp;
}

void Reverse_And_Print(char *str1,int start,int end){
    if(start == end){
        printf("%s\n",str1);
        return;
    }
    else{
        swap(str1,start,end);
        printf("%s\n",str1);
        Reverse_And_Print(str1,start+1,end-1);
    }
}

int main(){
    char str[7];
    char *str1;
    int num,num1;
    while(scanf("%s",str)!= EOF){
        scanf("%d",&num); 
        scanf("%d",&num1);
        str1 = (char *)malloc(sizeof(char)*(num1+1));
        scanf("%s",str1);
        printf("%s %d\n",str,num);
        Reverse_And_Print(str1,0,num1-1);
    }
    return 0;
}

 

//注:官网给的测试数据和样例说明冲突,因而提交上去会显示Runtime Error

 

posted @ 2016-12-29 19:02  我在这儿  阅读(335)  评论(0)    收藏  举报