1、编写一个函数(递归实现),将参数字符串反向排列,不能使用C函数库中的字符串操作函数。
#include <stdio.h>
int my_strlen(char* a)
{
int count = 0;
while (*a != '\0')
{
count++;
a++;
}
return count;
}
void nx(char* a)
{
char tmp = a[0];
int len = my_strlen(a);
a[0] = a[len - 1];
a[len - 1] = '\0';
if (my_strlen(a+1) >= 2)
nx(a + 1);
a[len - 1] = tmp;
}
int main()
{
int len = 0;
char a[] = "https://www.baidu.com";
len = my_strlen(a);
//printf("%d\n", strlen(a));
//printf("%d\n", len);
printf("%s\n", a);
nx(a);
printf("%s\n", a);
}
2、递归实现输入一个无符号整数,计算它每一位之和。
#include <stdio.h>
int Sum(unsigned int sum)
{
if (sum > 9)
return Sum(sum / 10) + sum % 10;
else
return sum;
}
int main()
{
unsigned int sum = 0;
scanf("%d", &sum);//1234
int ret=Sum(sum);
printf("%d\n",ret);
}
3、递归实现n的k次方。
#include <stdio.h>
int js(int n, int k)
{
//4^4,4*4*4*4
if (k >= 0)
{
if (k == 0)
return n;
else
return js(n, k - 1)*n;
}
else
{
return -1;
}
}
int main()
{
int ret = 0;
int n = 0;
int k = 0;
scanf("%d%d", &n, &k);
ret = js(n, k);
printf("%d\n", ret);
}