注册 登录
编程论坛 C++教室

将字符用递归法逆序输出

宇智波曌 发布于 2011-05-07 19:16, 2020 次点击
#include <stdio.h>
#include <string.h >
void fun(char str[])
{
    int i;
for (i=strlen(str)-1;i>=0;i--)
printf("%c", str[i]);
printf("\n");
}
void main()
{
char str[81];
printf("input the string :\n");
scanf("%s",str);
fun(str);
printf("%s\n",str);
}
这个程序能改成递归吗?
4 回复
#2
tisyang2011-05-07 20:08
这也是个递归,fun是递归函数,但是fun 没有改变原字符串,只是逆序输出而已。
程序代码:
#include <stdio.h>
void fun(char * p)
{
  if(*p != '\0')
    {
      fun(p+1);
      printf("%c", *p);
    }
}
int main()
{
  char str[81];
  printf("input the string :\n");
  scanf("%s",str);
  fun(str);
  printf("\n");
  printf("%s\n",str);
  return 0;
}
#3
宇智波曌2011-05-07 21:10
回复 2楼 tisyang
你用的是指针啊!这个我还没学到啊
#4
tisyang2011-05-07 21:23
回复 3楼 宇智波曌
这个用指针实现是很简洁的,当然也可以用数组的方法实现。
这个是数组方法,看起来没有用指针的自然。
程序代码:
#include <stdio.h>

 
void fun(char str[], int i)
{
  if(str[i] != '\0')
    {
      fun(str, i+1);
      printf("%c", str[i]);
    }
}
int main()
{
  char str[81];
  printf("input the string :\n");
  scanf("%s",str);
  fun(str, 0);
  printf("\n");
  printf("%s\n",str);
  return 0;
}
#5
宇智波曌2011-05-07 23:32
回复 4楼 tisyang
谢啦!
1