| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3151 人关注过本帖
标题:会递推但是不会写代码,请教
只看楼主 加入收藏
lidepeng1995
Rank: 2
等 级:禁止访问
帖 子:30
专家分:43
注 册:2018-7-8
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:29 
会递推但是不会写代码,请教
题目编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。

不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。

 

示例 1:

输入:["h","e","l","l","o"]
输出:["o","l","l","e","h"]
示例 2:

输入:["H","a","n","n","a","h"]
输出:["h","a","n","n","a","H"]


自己推出abcd
    dcba
 0 1 2  3
 3 2 1   0
 3-0   3-1 3-2  3-3
数组第i个元素总是和  array{length-1-i}进行互换,结束条件是length-1-i不为负数
可是用递推就不会写代码了
搜索更多相关主题的帖子: 代码 递推 数组 字符 输入 
2020-03-21 18:24
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
收藏
得分:0 
这一题必须用递推吗?迭代法多简单呀

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-03-21 20:34
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
收藏
得分:7 
程序代码:
#include<stdio.h>
#include<string.h>
#define max 256
int main()
{
    char a[max];
    gets(a);
    int length=strlen(a);
    for(int i=length-1;i>=0;i--)
    {
        printf("%c",*(a+i));
    }
    printf("\n");
    return 0;
}
2020-03-21 21:02
lidepeng1995
Rank: 2
等 级:禁止访问
帖 子:30
专家分:43
注 册:2018-7-8
收藏
得分:0 
回复 2楼 叶纤
对,最近在练习递归,说要用递归把这题做出来
2020-03-21 21:09
lidepeng1995
Rank: 2
等 级:禁止访问
帖 子:30
专家分:43
注 册:2018-7-8
收藏
得分:0 
回复 3楼 自学的数学
感谢,如果用递归该怎么做?
2020-03-21 21:10
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
收藏
得分:0 
回复 4楼 lidepeng1995
我很想帮你,可是我递归并不是很熟悉,因为我最近在学基础

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-03-21 21:15
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
收藏
得分:6 
程序代码:
想了一会居然可以了,哈哈哈
#include<iostream>
/*输入:["h","e","l","l","o"]
输出:["o","l","l","e","h"]


 */

 #include<cstring>

 using namespace std;

void weizhi(int length,char shuzi[][29])
{     if(length>=0)
{
         cout<<*(shuzi+length);
      weizhi(length-1, shuzi);

}
}
int main(){
    char shuzi[][29]={"h","e","l","l","o"};
  int length=size(shuzi);
  weizhi(length-1,&*(shuzi));


}


olleh

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-03-21 22:14
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:7 
回答问题前首先搞清楚递归和递推的关系,百度如下:
递归:程序调用自身的编程技巧称为递归,是函数自己调用自己。
递推:它是按照一定的规律来计算序列中的每个项,通常是通过计算机前面的一些项来得出序列中的指定象的值。其思想是把一个复杂的庞大的计算过程转化为简单过程的多次重复。
递归与递推区别:递归的步骤中包含递推,如一个规模为n的问题,递归首先通过回溯将问题回溯到n-1,n-2……,然后再通过递推从1的结果一直递推到n。
既然递归包含递推,我暂时理解一楼是要用递归解决问题吧:递归反显一个字符串很容易,但要原地反向修改该字符串稍微复杂些,但也能解决,如下:
程序代码:
#include <stdio.h>
void fun(char *a,char b,int s)
{
    int i;
    if(!a[s])return;
    b=a[s];
    a[s]=0;
    fun(a,b,s+1);
    if(b)
    {
        for(i=0;a[i];i++);
        a[i]=b;
    }
}
void main()
{
    char a[10]="abcdef",b;
    fun(a,b,0);
    printf("%s\n",a);
}

能编个毛线衣吗?
2020-03-21 22:16
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:0 
回复 7楼 叶纤
从题目要求来看 你的实现是错的
虽然逆序输出 但是你没有实现原地翻转

https://zh.
2020-03-21 22:47
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
收藏
得分:0 
回复 楼主 lidepeng1995
结束条件是length-1-i不为负数
这个结束条件弄错了

你全部交换 会导致每个元素交换2次
结果就是原来的字符串

https://zh.
2020-03-21 22:49
快速回复:会递推但是不会写代码,请教
数据加载中...
 
   



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

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