首页 > C++基础递归调用编程问题

C++基础递归调用编程问题

一道OpenJudge上的题,
我的问题是:这虽然是道递归调用题,可是我的代码好像并没有使用递归调用的方法,不知道如果要使用递归调用的话该是怎么样的用什么样的方式?

我的代码:

#include<iostream>
#include<string.h>
using namespace std;

int changeCharOrder(char table[]) {
    int i = 0, j, k;
    char *sptr = table;     // 设置一个指针sptr获取table
    char reversed[500];       // 设置一个用于存储翻转的字符数组
    strcpy(reversed, sptr);                  
    while (sptr[i]) {                         // 挨个判断sptr内容到末尾
        while (sptr[i] > 0 && sptr[i] <= ' ') // 遇到空格i补1.
            i++;
        j = i;                                //j在这里存放i//所以在这第一次hello过的时候j从0开始,i=0

        while (sptr[j] > ' ')                 // 统计单词长度(从i到j)
            j++;
        k = j;                                //存储单词结尾j.
        while (i < j)                         // 单词翻转,把正常单词的末尾字符一个个一次从头赋给reversed
            reversed[i++] = sptr[--k];      //i++使i作为下一个单词起始位置
    }
    cout << reversed << endl;
    return 0;
}
int main() {
    char c[500]= { '\0' };
    cin.getline(c,500);

    changeCharOrder(c);
    return 0;
}

具体题目:

输入一个句子(一行),将句子中的每一个单词翻转后输出。
输入:
只有一行,为一个字符串,不超过500个字符。单词之间以空格隔开。
输出:
翻转每一个单词后的字符串,单词之间的空格需与原文一致。
样例输入

hello world

样例输出

olleh dlrow


void changeCharOrder(char* str) 
{
    // print whitespace
    while (*str && *str == ' ')
        putchar(*str++);
    if (!(*str))
        return;

    // print the reversed word
    char *next = str;
    while (*next && *next != ' ') 
        next++;
    char *end = next - 1;
    while (end != str - 1)
        putchar(*end--);

    // handle next word
    changeCharOrder(next);
}

不高兴开C++编辑器。。
python:

def change_order(words):
    if len(words) is 1:
        return words
    return change_order(words[1:]) + words[0]

文字描述:
翻转函数(文字)
{
若 文字 长度为1
{
返回这个长度为1的文字本身
}
否则
{
返回 翻转函数(文字的第2~末尾字符组成的文字)和文字的第一个字符串联起来的文字
}
}

单词就这么干吧,先分割单词然后再一个个翻转

【热门文章】
【热门文章】