news 2026/8/9 16:21:03

练习(递归)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
练习(递归)

练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;
}



版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/7 10:33:46

DevSecOps实战:从威胁识别到自动化防护的持续安全实践

在数字化转型加速的今天&#xff0c;传统安全防护已无法满足快速迭代的开发需求。DevSecOps通过将安全左移&#xff0c;在软件开发生命周期早期识别威胁并实施自动化防护&#xff0c;帮助企业构建主动防御体系。本文将系统讲解威胁建模的理论框架&#xff0c;展示如何搭建自动化…

作者头像 李华
网站建设 2026/8/7 4:49:18

工程AI的“合规红线”:什么必须阻断,什么可以建议?

​摘要&#xff1a;在电力工程设计中&#xff0c;AI不能“越界”做决策&#xff0c;也不能“缺位”不提醒。良策金宝基于自主智能理念&#xff0c;将规范条款划分为“强制阻断类”与“优化建议类”——前者自动拦截违规操作&#xff0c;后者提供可选方案。通过规则可配置、逻辑…

作者头像 李华
网站建设 2026/8/8 16:51:32

设计院为何陷入“三高困境”?高负荷、高流失、高风险

摘要&#xff1a;项目激增&#xff0c;人却越干越累&#xff1b;骨干出走&#xff0c;新人难扛重任&#xff1b;图纸频返&#xff0c;合规屡踩红线——设计院正深陷“高负荷、高流失、高风险”的恶性循环。根源不在人力短缺&#xff0c;而在知识无法沉淀、经验无法复用、规则无…

作者头像 李华
网站建设 2026/8/8 21:24:56

从零构建企业级RAG系统:5大核心技术提升AI回答准确率90%+ (含完整代码)

本文系统介绍RAG高级技术体系&#xff0c;涵盖Query改写、联网搜索、混合检索与Rerank重排序等核心技术&#xff0c;解决AI回答不准确、无法处理实时问题等痛点。通过知识库问题生成、对话知识沉淀、健康检查与版本管理等机制&#xff0c;实现知识库自我进化。以迪士尼客服为例…

作者头像 李华
网站建设 2026/8/8 4:17:32

Backtrader量化交易框架:从入门到精通的完整实战指南

Backtrader量化交易框架&#xff1a;从入门到精通的完整实战指南 【免费下载链接】backtrader 项目地址: https://gitcode.com/gh_mirrors/bac/backtrader Backtrader作为Python生态中最受欢迎的量化交易框架之一&#xff0c;以其强大的功能和灵活的架构赢得了全球交易…

作者头像 李华
网站建设 2026/8/8 3:45:11

3大核心技术揭秘:Puerts如何让UE5程序化生成效率提升500%

3大核心技术揭秘&#xff1a;Puerts如何让UE5程序化生成效率提升500% 【免费下载链接】puerts PUER(普洱) Typescript. Lets write your game in UE or Unity with TypeScript. 项目地址: https://gitcode.com/GitHub_Trending/pu/puerts 在游戏开发领域&#xff0c;程序…

作者头像 李华