- 编写一个函数实现n^k
- 写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和
- 编写一个函数 reverse_string(char * string)(递归实现)
实现:将参数字符串中的字符反向排列。
要求:不能使用C函数库中的字符串操作函数。 - 实现strlen
- 实现求n的阶乘
- 打印一个整数的每一位
//1.编写一个函数实现n^k,使用递归实现
#include <stdio.h>
int My_Pow(int n, int k)
{
if (k == 0)
{
return 1;
}
else if (k == 1)
{
return n;
}
else
{
return n*My_Pow(n,k - 1);
}
}
int main()
{
int n = 2;
int k = 5;
int c = My_Pow(n, k);
printf("%d^%d=%d", n, k, c);
return 0;
}
//2. 写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,
//例如,调用DigitSum(1729),则应该返回1 + 7 + 2 + 9,它的和是19
#include <stdio.h>
int DigitSum(int n)
{
if (n <= 9)
return n;
else
return DigitSum(n / 10) + n % 10;
}
int main()
{
int a = 0;
printf("请输入一个非负整数:");
scanf("%d", &a);
printf("组成它的数字之和为:%d", DigitSum(a));
return 0;
}
3. 编写一个函数 reverse_string(char * string)(递归实现)
实现:将参数字符串中的字符反向排列。
要求:不能使用C函数库中的字符串操作函数。
#include <stdio.h>
#include <string.h>
#include <assert.h>
void reverse_string(char *string)
{
assert(string != NULL);
if (*(string) != '\0')
{
string++;
reverse_string(string);
printf("%c", *(string-1));
}
}
int main()
{
char* a = "abcd";
reverse_string(a);
printf("\n");
return 0;
}
//4.递归和非递归分别实现strlen
//非递归
#include <stdio.h>
#include <string.h>
#include <math.h>
int Strlen(char *str)
{
int ret = 0;
if (*str == '\0')
return 0;
while (*str != 0)
{
ret++;
str++;
}
return ret;
}
int main()
{
char *str = "abcdef";
printf("%d", Strlen(str));
return 0;
}
//递归
int Strlen(char *str)
{
if (*str == '\0')
{
return 0;
}
return Strlen(str + 1)+1;
}
int main()
{
char *str = "abcdef";
printf("%d", Strlen(str));
return 0;
}
//5.递归和非递归分别实现求n的阶乘
//非递归
#include <stdio.h>
int Factor(int i)
{
int set = 1;
for (; i>=1; i--)
{
set = i*set;
}
return set;
}
int main()
{
int n = 0;
printf("请输入一个数:");
scanf("%d", &n);
Factor(n);
printf("这个数的阶乘为:%d\n", Factor(n));
return 0;
}
//递归
#include <stdio.h>
int Factor(int n)
{
if (n == 0)
{
return 1;
}
return n*Factor(n-1);
}
int main()
{
int n = 0;
printf("请输入一个数:");
scanf("%d", &n);
Factor(n);
printf("这个数的阶乘为:%d\n", Factor(n));
return 0;
}
//6.递归方式实现打印一个整数的每一位
#include <stdio.h>
int P(int a)
{
if (a > 9)
{
P(a / 10);
}
printf("%d ", a % 10);
}
int main()
{
int n = 0;
printf("请输入一个数:");
scanf("%d", &n);
return P(n);
}