c语言 递归调用

来源:百度知道 编辑:UC知道 时间:2024/06/19 21:54:19
我想读入一些字符串,然后递归调用函数在倒序输出,代码写出了,不知道那里错了,请高手指点:
#include <stdio.h>
#include <string.h>
char str[50];
char *q=0;
char lx(char *p)
{char m;
if(p==q) return *p;
else
{m=lx(p++);
return m;
}
void main()
{printf("input the str: \n");
gets(str);
q=str+strlen(str);
puts("\n");
printf("%c ",lx(str));
}

#include <stdio.h>
void reverse(void);

int main(void)
{
reverse();
return 0;
}

void reverse(void)
{
char c;

scanf("%c",&c);

if(c!='#')//以#标志结束
{
reverse();
printf("%c",c);
}
}

你这个程序错误太多了,而且调用函数只能有返回一个函数值,而你这样根本无法达到目的。这个程序与其修改不如重写更快一些。

直接反序输出不就得了,什么递归不递归的,憋以为学了点新玩意就乱用,得看场合

#include <stdio.h>
#include <string.h>
char str[50];
int lx(int i)
{
if(str[i]=='#')//以#结束
return 0;
lx(i+1);
printf("%c",str[i]);
}
int main()
{printf("input the str: \n");
scanf("%s",str);
printf("\n");
lx(0);
while(1);
}