如何使用C中的递归将每个数字替换为右侧的近数字?
我有一个关于使用递归替换数字的问题 我正在做一个关于递归的自我练习,我被其中一个问题困住了 问题:我需要编写接收int num的递归函数。 该功能需要将数字替换为左侧的数字。 例如:输入如何使用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
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;
}