C语言初学者-基础的三篇代码-6-

编程知识 更新时间:2023-04-06 19:38:12

C语言初学者-基础的三篇代码-6-

1. 编写一个函数reverse_string(char * string)(递归实现)

实现:将参数字符串中的字符反向排列。
要求:不能使用C函数库中的字符串操作函数。

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<assert.h>
void reverse_string(char const * string)
{ 
 assert(string != NULL); 
 if (*string != '\0')
 { 
  string++; 
  reverse_string(string); 
  printf("%c", *(string - 1));
 } 
} 
int main()
{ 
 char *string = "xiaosuntaiyang";
 printf("原字符串为:  %s\n反向排列后为:", string);
 reverse_string(string); 
 printf("\n"); 
 return 0;
}

运行结果

2.递归和非递归分别实现strlen

递归

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<windows.h>
int my_strlen(char *string)
{
 int count = 0;
 if (*string != '\0')
 {
  string++;
  count = 1 + my_strlen(string);
 }
 return count;
}
int main()
{
 char *str = "abcdef";
 printf("%d\n", my_strlen(str));
 system("pause");
 return 0;
}

非递归

#include<stdio.h>
#include<windows.h>
int my_strlen(char *string)
{
 int count = 0;
 if (*string != '\0')
  count++;
 return count;
}
int main()
{
 char *str = "abcdef";
 printf("%d\n", my_strlen(str));
 system("pause");
 return 0;
}

运行结果
左为递归,右为非递归

3.递归和非递归分别实现求n的阶乘

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<windows.h>
int  D_N(int n)  //递归
{
 if (n == 1)
  return 1;
 return n * D_N(n - 1);
}
int FD_N(int n) //非递归
{
 int sum = 1;
 for (; n > 0; n--)
  sum *= n;
 return sum;
}
int main()
{
 int n = 5;
 printf("请输入n:");
 scanf_s("%d", &n);
 int DS = 0;
 int FDS = 0;
 DS = D_N(n);
 FDS = FD_N(n);
 printf("递归结果:%d\n", DS);
 printf("非递归结果:%d\n", FDS);
 system("pause");
 return 0;
}

运行结果

更多推荐

C语言初学者-基础的三篇代码-6-

本文发布于:2023-04-06 19:38:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/92392450e75afbc4eab11134ad185579.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:初学者   三篇   语言   代码   基础

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 50553文章数
  • 14阅读数
  • 0评论数