#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//1.字符串逆序(不用C语言库函数)
int my_strlen(char* p) //求字符串长度函数
{
int count = 0;
while (*p != '\0')
{
count++;
p++;
}
return count;
}
//非递归解法
void Reverse(char* p) //字符逆序打印函数
{
int left = 0;
int right = my_strlen(p) - 1;
while (left < right)
{
char tmp = *(p + left);
*(p + left) = *(p + right);
*(p + right) = tmp;
left++;
right--;
}
}
//递归解法
void Reverse(char* p)
{
char tmp = *p; //①
int len = my_strlen(p);
*p = *(p + len - 1); //②
*(p +len - 1) = '\0'; //③
if (my_strlen(p + 1) >= 2)
{
Reverse(p + 1); //④
}
*(p + len - 1) = tmp; //⑤
}
int main()
{
char str[] = "abcdef";
Reverse(str);
printf("%s", str);
return 0;
}
//2.给一个数字,求出每位数字相加之和
int perSum(int n)
{
if (n > 9)
{
return perSum(n / 10) + n % 10;
}
else
return n;
}
int main()
{
int n = 2023;
printf("%d \n", perSum(n));
return 0;
}
//3.编写一个函数,递归实现n的k次方
double Pow(int n, int k) //求n的k次方函数
{
if (k == 0)
{
return 1.0;
}
else if (k > 0)
{
return n * Pow(n,k-1);
}
else
{
return (1.0) / Pow(n, (-k));
}
}
int main()
{
int n,k;
scanf("%d %d", &n, &k);
double ret = Pow(n, k);
printf("%lf\n", ret);
return 0;
}
函数递归练习
最新推荐文章于 2024-09-28 21:49:26 发布