1,字符串逆序(递归实现)
题目内容:编写一个函数reverse_string(char*string)(递归实现)
实现:将参数字符串中的字符反向排列,不是逆序打印。
要求:不能使用C函数库中的字符串操作函数。
#include <stdio.h>
int my_strlen(char* str)
{
int count = 0;
while(*str != '\0')
{
count++;
str++;
}
return count;
}
void reverse_string(char* str)
{
int len = my_strlen(str);
char t = *str;//1
*str = *(str + len - 1);//2
*(str + len - 1) = '\0';//3
if (my_strlen(str + 1) >= 2)
{
reverse_string(str + 1);//4
}
*(str + len - 1) = t;//5
}
int main()
{
char arr[20];
scanf("%s",arr);
reverse_string(arr);
printf("%s",arr);
return 0;
}
2,计算一个数的每一位之和(递归实现)
题目内容:
写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和。
#include <stdio.h>
int DigitSum(int sum)
{
if (sum > 9)
{
return sum % 10 + DigitSum(sum / 10);
}
return sum;
}
int main()
{
int num;
scanf("%d", &num);
printf("%d", DigitSum(num));
return 0;
}
3,递归实现n的k次方
题目内容:
编写一个函数实现n的k次方,使用递归实现。
#include <stdio.h>
double Pow(int i,int j)
{
if (j > 0)
{
return i * Pow(i , j - 1);
}
else if (j < 0)
{
return 1.0 / Pow(i, -j);
}
else
{
return 1.0;
}
}
int main()
{
int n, k;
scanf("%d%d", &n, &k);
printf("%lf",Pow(n, k));
return 0;
}