如何使用C中的递归将每个数字替换为右侧的近数字?

如何使用C中的递归将每个数字替换为右侧的近数字?,c,recursion,C,Recursion,我有一个关于使用递归替换数字的问题 我正在做一个关于递归的自我练习,我被其中一个问题困住了 问题:我需要编写接收int num的递归函数。 该功能需要将数字替换为左侧的数字。 例如:输入123456输出为214365(从左向右看) 我试着这样做: #include<stdio.h> int Move_to_right(int n) { int result; int tmp; int sum; if (n < 10) { re

我有一个关于使用递归替换数字的问题

我正在做一个关于递归的自我练习,我被其中一个问题困住了

问题:我需要编写接收int num的递归函数。 该功能需要将数字替换为左侧的数字。 例如:输入
123456
输出为
214365
(从左向右看)

我试着这样做:

#include<stdio.h>

int Move_to_right(int n) {
    int result;
    int tmp;
    int sum;

    if (n < 10) {
        return n;
    }

    Move_to_right(n / 10);

    return (((n % 100) % 10) * 10) + ((n % 100) / 10);  
#包括
int向右移动(int n){
int结果;
int tmp;
整数和;
如果(n<10){
返回n;
}
向右移动(n/10);
回报率((n%100)%10)*10)+(n%100)/10;
输出为
65

我不知道如何将所有的连接在一起。
(我想说的是,我正处于递归的开始阶段,因此如果您有任何建议,我将很高兴听到!)。

\include
#包括
#包括
int main(int argc,char const*argv[]
{
char-hey[6]=“abcdef”;
charmem;
对于(大小i=0;i
像这样? 输出类似于您描述的badcfe 作为递归

char *leRecursionMeme(char *hey, int a){
    char t;
    if (a>=0)
    {
        t=hey[a];
        hey[a]=hey[a-1];
        hey[a-1]=t;
        hey=leRecurisionMeme(hey, a-2);
    }
    return hey;
}
int main(int argc, char const *argv[])
{
    char *hey;
    hey=malloc(6);
    strcpy(hey, "abcdef");
    if (hey==NULL)
    {
        printf("error");
    }
    char mem;
    for (size_t i = 0; i < strlen(hey); i+=2){
        mem=hey[i];
        hey[i]=hey[i+1];
        hey[i+1]=mem;
    }
    printf("%s\n", hey);
    hey=leRecursionMeme(hey, 5);
    printf("%s\n", hey);
    return 0;
}
char*leRecursionMe(char*hey,inta){
查尔特;
如果(a>=0)
{
t=嘿[a];
嘿[a]=嘿[a-1];
嘿[a-1]=t;
hey=leRecurisionMeme(hey,a-2);
}
回喂;
}
int main(int argc,char const*argv[]
{
char*嘿;
hey=malloc(6);
strcpy(嘿,abcdef);
if(hey==NULL)
{
printf(“错误”);
}
charmem;
对于(大小i=0;i
提示:
123456%100=56
56%10=6
56/10=5
6*10+5=65
(注意:使用整数数学。)你应该表现出诚实的尝试…另一个选项是将数字转换为字符串。你的描述有点不清楚。你不是用右边的邻居替换数字,而是在交换数字。否则,
2
应该被
3
替换,而不是
1
。你坚持使用recur的事实锡安说这听起来像是家庭作业。关于递归的家庭作业,应该可以帮助你练习递归。你对递归有多熟悉?你已经编写了一个处理数字的递归函数吗?
char-hey[6]=“abcdef”;
没有为字符串终止符留出空间
\0
。请改用
char-hey[]=“abcdef”
。@Johnnymapp我正在考虑手头的问题(即算法)例如,使用memoryI编辑我的帖子,我希望现在更清楚。你只使用这6个字符并不重要。像
printf
strlen
strcpy
这样的函数,除了终止符字符之外。strcpy已经在末尾添加了一个空终止符,而且代码只是prax中的一个例子是的,这是真的,我应该计算空字符串终止符,但我认为op想要的是算法,而不是代码本身
char *leRecursionMeme(char *hey, int a){
    char t;
    if (a>=0)
    {
        t=hey[a];
        hey[a]=hey[a-1];
        hey[a-1]=t;
        hey=leRecurisionMeme(hey, a-2);
    }
    return hey;
}
int main(int argc, char const *argv[])
{
    char *hey;
    hey=malloc(6);
    strcpy(hey, "abcdef");
    if (hey==NULL)
    {
        printf("error");
    }
    char mem;
    for (size_t i = 0; i < strlen(hey); i+=2){
        mem=hey[i];
        hey[i]=hey[i+1];
        hey[i+1]=mem;
    }
    printf("%s\n", hey);
    hey=leRecursionMeme(hey, 5);
    printf("%s\n", hey);
    return 0;
}