字符串逆序(非递归调用)
#include <stdio.h>
//字符串逆序(非递归)
int main()
{
char arr[] = { "abcdefwqeqwrqetqt" };
int sz = sizeof(arr) / sizeof(arr[0]);
int left = 0;
int right = sz - 2;
while (left < right)
{
char tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
left++;
right--;
}
printf("%s\n", arr);
}
字符串逆序(递归算法)
#include <stdio.h>
#include <string.h>;
void reverse(char* str)
{
int len = strlen(str);
char tmp = *str;
*str = *(str + len - 1);
*(str + len - 1) = '\0';
if(strlen(str+1)>1)
reverse(str + 1);
*(str + len - 1) = tmp;
}
int main()
{
char arr[] = "abcdefg";
reverse(arr);
printf("%s", arr);
}
递归计算数字的每一位求和
#include <stdio.h>
int Digitsum(int x)
{
if (x > 9)
return Digitsum(x / 10) + x % 10;
else
return x;
}
int main()
{
unsigned int a = 0;
scanf("%u", &a);
int sum=Digitsum(a);
printf("%d", sum);
递归计算n的k次方
#include <stdio.h>
double pow(int x, int y)
{
if (y > 0)
return x * pow(x, y - 1);
else if (y == 0)
return 1;
else
return 1.0 / pow(x, -y);
}
int main()
{
int n, k = 0;
printf("请输入n的k次幂\n");
scanf("%d %d", &n, &k);
double sum = pow(n, k);
printf("结果是%lf\n", sum);
}