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-
发布评论