编程论坛's Archiver

柳丝飘絮 发表于 2008-4-8 22:45

怎样用递归法使字符串倒序

各位高手:怎样用递归法使字符串倒序?

zjl138 发表于 2008-4-8 22:56

字符串倒序干吗要用递归呢?
今晚没时间讨论了,学校要关灯了,明天再来看,呵呵。。

sunkaidong 发表于 2008-4-8 23:21

#include<iostream.h>
#include<stdio.h>
void reverse(char *a,int i,int n)
{
  if(i==n)
          cout<<a[i]<<"\t";
  else
          reverse( a, i+1, n);
      cout<<a[i-1]<<"\t";
}
int main()
{   int n;
    cout<<"请输入字符数组长度!"<<endl;
        cin>>n;
    char *p=new char[n];
        gets(p);
        reverse(p,1,n-1);
        cout<<endl;
       
}

wxwy3glp 发表于 2008-4-15 11:10

#include <stdio.h>
#include <string.h>
void reverse(char *s, int i, int n)
{
        if(i == n)printf("%c", s[i]);
        else
        {
            reverse(s, i+1, n);
        printf("%c", s[i]);
        }
}
int main()
{
        char s[100];
        scanf("%s", s);
        reverse(s, 0, strlen(s)-1);
        return 0;       
}

wxwy3glp 发表于 2008-4-15 11:10

e

3楼的有点问题

sunkaidong 发表于 2008-4-15 12:09

我的有什么问题?说来听听..

tymstill 发表于 2008-4-15 15:02

是有问题啊,运行一下看看

sunkaidong 发表于 2008-4-15 15:38

我用动态数组节约空间,所以必须输入字符长度。这不是什么问题。。。

野比 发表于 2008-4-17 19:17

可以for一下取个长度嘛   不然就是“有问题”了

flylee 发表于 2008-4-18 00:12

[code]
#include <iostream>
using namespace std;

void reverse(string &s, int a, int b)
{
        if(a<b)
        {
                swap(s[a],s[b]);
                reverse(s,a+1,b-1);
        }
}

int main()
{
        string s;
        cin>>s;
        cout<<"Before reverse:\n"<<s<<endl;
        reverse(s, 0, s.length()-1);
        cout<<"After reverse:\n"<<s<<endl;
        system("PAUSE");
        return EXIT_SUCCESS;
}
[/code]
用GCC调过,VC没试过,可能会有问题

柳丝飘絮 发表于 2008-4-27 07:49

相当棒,谢谢各位

中学者 发表于 2008-4-27 09:54

[code]
void reverse(char* arr,int size_a,const char* pat,int size_p)
{
      if(size_a == size_p)  arr[size_a-size_p-1] = pat[size_p];
          else
          {
                  arr[size_a-1-size_p] = pat[size_p];
                  reverse(arr,size_a,pat,size_p+1);
          }
}
arr[strlen(pat)] ='\0';
[/code]

abelsky 发表于 2008-4-28 20:55

我只是菜鸟

#include<iostream>
#include<string.h>
using namespace std;
int main()
{
    int t;
    char str[1024];
    gets(str);
    t=strlen(str);   //求字符串长度
    int n=t-1;
    for(int j=0;j<n;j++,n--)     //进行转换  实现字符反转
    {
        char t;
        t=str1[j];
        str1[j]=str1[n];
        str1[n]=t;            
    }
    puts(str);
    return 0;
}

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.