
本篇为作者学习C语言过程中遇到的一些值得多次学习的题目。
给相同新学习C的朋友们分享。
目录
- 使用函数递归方式实现打印一个整数的每一位
- 递归和非递归分别实现求n的阶乘(不考虑溢出的问题)
- 编写一个函数实现i的k次方,使用递归实现。
- 递归和非递归分别模拟strlen的实现
- 使用函数递归方式实现打印一个整数的每一位
#include
void print(unsigned int n)
{
if (n > 9)
print(n / 10);
printf("%d ", n % 10);
}
int main()
{
int n = 0;
scanf("%d", &n);
print(n);//函数
return 0;
}
- 递归和非递归分别实现求n的阶乘(不考虑溢出的问题)
int main()
{
int n = 0;
int i = 0;
int input = 1;
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
input = input * i;
}
printf("%d\n", input);
}
递归方法
int fac(int n)
{
if (n > 1)
return n * fac(n - 1);
}
int main()
{
int n = 0;
scanf("%d", &n);
int ret = fac(n);
printf("%d\n", ret);
return 0;
}
- 编写一个函数实现i的k次方,使用递归实现。
#include
//输入i, k
int Pow(int i, int k)
{
if (k == 0)
{
return 1;
}
else if(k>0)
{
return i * (Pow(i, k - 1));
}
else
{
return 1.0 / (Pow(i, -k));
}
}
int main()
{
int i = 0;
int k = 0;
scanf("%d%d", &i, &k);
double ret = Pow(i, k);
printf("%lf\n", ret);
return 0;
}
- 递归和非递归分别模拟strlen的实现
int my_strlen(char *str)
{
int count = 0;
while(*str !='int my_strlen(char * str)
{
if (*str != '')
return 1 + my_strlen(str+1);
else
return 0;
}
int main()
{
char arr[] = { "abcdefg" };
int len = my_strlen(arr);
printf("%d\n", len);
return 0;
}')
{
count++;
str++;
}
return count;
}
int main()
{
char arr[] = { "abcdefg" };
int len = my_strlen(arr);
printf("%d\n",len);
return 0;
}
使用函数递推法
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)