注册 登录
编程论坛 C++教室

求高手解决一道题

宇智波曌 发布于 2011-05-06 00:23, 636 次点击
用递归的方法将一个字符串逆序存放怎么编写。(注:不要用指针)
11 回复
#2
yuccn2011-05-06 08:45
程序代码:
#include <stdio.h>
#include <iostream>
using namespace std;

void reverse(char string[], int len)
{
    if (len <= 1) {
        return;
    }

    char temp = string[0];
    string[0] = string[len - 1];
    string[len - 1] = temp;

    reverse(&string[1], len - 2);
}

void main()
{
    char StringTest[] = { "123456789abcdef" };
    cout<<StringTest << endl;
    reverse(StringTest, strlen(StringTest));

    cout<<"reverse:  "<< StringTest<<endl;
}
#3
宇智波曌2011-05-06 12:07
回复 2楼 yuccn
    cout<<StringTest << endl;// 这是什么意思啊,看不懂啊//
     能用 return 写吗?
                                                                                                                                                                                                                                         
#4
yuccn2011-05-06 14:21
回复 3楼 宇智波曌
你只要理解逆转那个函数就行了reverse()
#5
specilize2011-05-06 16:52
程序代码:
#include <stdio.h>
void print(char ch=getchar())
{
   if(ch!='\n'){
     print(ch=getchar());
     printf("%c",ch);
     }
}
void main()
{
     char ch;
     printf("输入一行字符串\n");
     print(ch=getchar());
     printf("%c\n",ch);
}
像存在数组中就改在存在数组中就行了

[ 本帖最后由 specilize 于 2011-5-6 16:55 编辑 ]
#6
宇智波曌2011-05-06 17:31
回复 5楼 specilize
这不是递归函数啊,我要的是用递归写啊!
#7
宇智波曌2011-05-06 17:38
回复 4楼 yuccn
这个我没学,真的好难理解。怎么来的、为什么这么写,我根本不知道原因啊!不过还是谢谢你,我还是自己再想想吧!
#8
yuccn2011-05-06 17:57
5楼用的是递归  不过不是对字符串处理,而是对输入的逆向输出。^_^
#9
宇智波曌2011-05-07 19:12
回复 8楼 yuccn
#include <stdio.h>
#include <string.h >
void fun(char str[])
{
    int i;
for (i=strlen(str)-1;i>=0;i--)
printf("%c", str[i]);
printf("\n");
}
void main()
{
char str[81];
printf("input the string :\n");
scanf("%s",str);
fun(str);
printf("%s\n",str);
}
这个程序能改成递归吗?
#10
yuccn2011-05-08 09:32
回复 9楼 宇智波曌
程序代码:
#include <stdio.h>
#include <string.h >
void fun(char str[], int nPos)
{
    printf("%c", str[i]);

    if (nPos == 0) {
       printf("\n");
       return;
    }

    fun(str[], nPos - 1);
}
void main()
{
   char str[81];
   printf("input the string :\n");
   scanf("%s",str);
   fun(str, strlen(str));
   printf("%s\n",str);
}

为什么要写成递归,效率一点也不好也没有什么优越的地方
#11
宇智波曌2011-05-08 15:45
回复 10楼 yuccn
题目要用递归啊,我这样写不合要求啊!
#12
宇智波曌2011-05-10 21:02
回复 5楼 specilize
这个程序是用递归写的,今天我看懂了,先前说你不是递归,不好意思啊!
1