| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 636 人关注过本帖
标题:求高手解决一道题
只看楼主 加入收藏
宇智波曌
Rank: 2
等 级:论坛游民
帖 子:98
专家分:15
注 册:2011-4-17
结帖率:100%
收藏
已结贴  问题点数:2 回复次数:11 
求高手解决一道题
用递归的方法将一个字符串逆序存放怎么编写。(注:不要用指针)
搜索更多相关主题的帖子: 字符串 
2011-05-06 00:23
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:2 
程序代码:
#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;
}

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2011-05-06 08:45
宇智波曌
Rank: 2
等 级:论坛游民
帖 子:98
专家分:15
注 册:2011-4-17
收藏
得分:0 
回复 2楼 yuccn
    cout<<StringTest << endl;// 这是什么意思啊,看不懂啊//
     能用 return 写吗?
                                                                                                                                                                                                                                         
2011-05-06 12:07
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
回复 3楼 宇智波曌
你只要理解逆转那个函数就行了reverse()

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2011-05-06 14:21
specilize
Rank: 4
等 级:业余侠客
帖 子:126
专家分:247
注 册:2011-2-20
收藏
得分:0 
程序代码:
#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 编辑 ]
2011-05-06 16:52
宇智波曌
Rank: 2
等 级:论坛游民
帖 子:98
专家分:15
注 册:2011-4-17
收藏
得分:0 
回复 5楼 specilize
这不是递归函数啊,我要的是用递归写啊!
2011-05-06 17:31
宇智波曌
Rank: 2
等 级:论坛游民
帖 子:98
专家分:15
注 册:2011-4-17
收藏
得分:0 
回复 4楼 yuccn
这个我没学,真的好难理解。怎么来的、为什么这么写,我根本不知道原因啊!不过还是谢谢你,我还是自己再想想吧!
2011-05-06 17:38
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
5楼用的是递归  不过不是对字符串处理,而是对输入的逆向输出。^_^

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2011-05-06 17:57
宇智波曌
Rank: 2
等 级:论坛游民
帖 子:98
专家分:15
注 册:2011-4-17
收藏
得分:0 
回复 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);
}
这个程序能改成递归吗?
2011-05-07 19:12
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
回复 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);
}

为什么要写成递归,效率一点也不好也没有什么优越的地方

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2011-05-08 09:32
快速回复:求高手解决一道题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014761 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved