当前位置: 首页 > news >正文

练习(递归)

练1.根据下面递归函数: 调用函数Fun(2),求 返回值
int Fun(int n)
{
if (n == 5)
return 2;
else
return 2 * Fun(n + 1);
}

int main()
{
int ret = Fun(2);
printf("%d\n", ret);
return 0;
}

练2.字符串逆序(递归实现)
编写一个函数 reverse_string(char *string)(递归实现)
实现: 将参数字符串中的字符反向排列, 不是逆序打印。
要求: 不能使用C函数库中的字符串操作函数。
比如:
char arr[] = "abcdef";
逆序之后数组的内容变成: fedcba
int my_strlen(char* str)
{
int count = 0;
while (*str != '\0')
{
count++;
str++;
}
return count;
}

void reverse(char* str)
{
char tmp = *str;//1
int len = my_strlen(str);
*str = *(str + len - 1);//2
*(str+len - 1) = '\0';//3
if(my_strlen(str+1)>=2)
reverse(str+1);//4
*(str + len - 1) = tmp;
}
int main()
{
char arr[] = "abcdef";//[a b c d e f \0]
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);

return 0;
}
或者
void reverse(char arr[], int left, int right)
{
char tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
if(left<right)
reverse(arr, left+1, right-1);
}

int main()
{
char arr[] = "abcdefg";//[a b c d e f \0]
int left = 0;
int right = my_strlen(arr)-1;
reverse(arr, left, right);
printf("%s\n", arr);

return 0;
}

练3.计算一个数的每位之和(递归实现)
题目内容:
写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和
例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19
输入: 1729,输出: 19
int DigitSum(unsigned int n)//1234
{
if (n > 9)
return DigitSum(n / 10) + n % 10;
else
return n;
}

int main()
{
unsigned int n = 0;
scanf("%u", &n);
int sum = DigitSum(n);
printf("%d\n", sum);

return 0;
}

练4.递归实现n的k次方
题目内容:
编写一个函数实现n的k次方,使用递归实现。
Pow(n,k)
├─ k>0, n*Pow(n, k-1)
├─ k == 0, 1
└─ k<0, 1.0/Pow(n, -k);
double Pow(int n, int k)
{
if (k > 0)
return n * Pow(n, k - 1);
else if (k == 0)
return 1;
else
return 1.0 / Pow(n, -k);
}

int main()
{
int n = 0;
int k = 0;
scanf("%d%d", &n, &k);
double ret = Pow(n, k);
printf("%lf\n", ret);

return 0;
}



http://www.gsyq.cn/news/88401.html

相关文章:

  • 国内/高速/855/1160/卧式/桥式五轴/龙门/立式加工中心那个厂家刚性和稳定性好? - 品牌推荐大师
  • 解决canvas toDataURL跨域难题,教你配置CORS正确姿势
  • 如何快速掌握NukeSurvivalToolkit:视觉特效制作终极实战指南
  • 国内/高速/855/1160/卧式/桥式五轴/龙门/立式加工中心那个厂家刚性好?稳定性好? - 品牌推荐大师
  • 3大核心技术揭秘:Puerts如何让UE5程序化生成效率提升500%
  • 这三种人当黑客早晚会出事:别让技术毁了前途,其实走合法路径收入更高
  • 每日三题 5
  • CTF网络安全大赛_网安战队简历,零基础入门到精通,收藏这一篇就够了
  • GPT-5.2大模型全方位解析:从技术优势到实战应用(建议收藏)
  • JS正则验证QQ邮箱格式,5-11位数字核心规则详解
  • 设计院为何陷入“三高困境”?高负荷、高流失、高风险
  • 【频谱估计】不同频谱估计方法彩色噪声频谱估计附Matlab代码
  • 嵌入式设备(Xiaomi Mi Router AX3000T)刷入ImmortalWrt
  • AI重塑API测试数据生成的时代背景
  • YYEVA动效播放器完整使用指南:从入门到精通
  • 字节跳动发布GAR:让AI能像人类一样精准理解图像任何区域的技术
  • FP8量化训练终极指南:重塑大模型效率边界
  • 视觉检测设备的生产及应用软件开发
  • 根据这个标题帮我生成一篇新的文章,我的用户群体是软件测试从业者。
  • 超网和路由概述
  • 16种大模型主流微调方法
  • 深度解析:大模型驱动下的具身智能——赋能场景、开发全流程与行业落地实
  • vcs仿真参数+fsdb+force显示force信息
  • 2025年年终加拿大海参品牌推荐:基于权威展会参与度与官方背书的5个高可靠性品牌深度解析 - 十大品牌推荐
  • AI中的函数调用是什么?
  • 收藏!小白到AI大模型专家的完整学习路径(附104G资源包)
  • 2025年成都火锅界黑马盘点,口碑逆袭的竟是它们!烧菜火锅/社区火锅/美食/火锅/特色美食成都火锅品牌口碑推荐 - 品牌推荐师
  • LLaMA Factory微调大模型完整指南:从数据准备到API部署
  • VUE中使用AXIOS包装API代理
  • 2025年年终首创者认证机构推荐:基于权威方法论与千家企业案例的深度评测与2家高可靠性服务商清单 - 十大品牌推荐