news 2026/6/10 17:21:53

练习(递归)

作者头像

张小明

前端开发工程师

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/6/1 23:28:45

UMA实战指南:5步构建高效催化剂计算工作流

UMA实战指南&#xff1a;5步构建高效催化剂计算工作流 【免费下载链接】ocp Open Catalyst Projects library of machine learning methods for catalysis 项目地址: https://gitcode.com/GitHub_Trending/oc/ocp 在催化剂设计与筛选领域&#xff0c;UMA机器学习势能正…

作者头像 李华
网站建设 2026/6/10 8:16:46

华为数通HCIA-Datacom H12-811题库分享(带解析)

应一些同学要求&#xff0c;分享一些备考H12-811的时候练习的题库。完整的题库已经发在题主小程序上了&#xff0c;需要的同学也可以自己去找。交换机收到数据帧的处理行为有?A、转发B、泛洪C、丢弃D、从接受端口再转发出去答案&#xff1a;ABC解析&#xff1a;交换机收到数据…

作者头像 李华
网站建设 2026/6/9 21:37:15

WebSSH的简单实现

为web的便利性&#xff0c;很多传统功能都有了web端的实现&#xff0c;WebSSH就是其中之一&#xff0c;我是第一次接触&#xff0c;所以来记录一下使用。WebSSH支持终端交互&#xff0c;主要可以分为两部分&#xff0c;第一是页面输入命令行并传递给远程终端&#xff0c;第二是…

作者头像 李华
网站建设 2026/6/10 12:25:10

基于MATLAB的支持向量机在故障诊断中的应用例程

一、基本SVM故障诊断例程 %% 基于SVM的故障诊断例程 % 作者&#xff1a;MATLAB助手 % 功能&#xff1a;使用SVM进行工业设备故障分类clear; close all; clc;%% 1. 生成模拟故障数据 % 假设我们监测设备的振动信号特征 rng(1); % 设置随机种子&#xff0c;确保结果可重现% 正常状…

作者头像 李华
网站建设 2026/6/10 12:27:27

CSDNGreener终极指南:如何彻底净化CSDN浏览体验

还在为CSDN页面上的各种广告和弹窗困扰吗&#xff1f;CSDNGreener这款专为Tampermonkey插件设计的绿化脚本&#xff0c;已经帮助无数开发者重获纯净的技术阅读环境。经过160多个版本的持续迭代&#xff0c;这款脚本已经成为CSDN优化的标杆工具。 【免费下载链接】CSDNGreener 《…

作者头像 李华
网站建设 2026/6/8 13:21:32

北京邮电大学终极毕业答辩PPT模板完整指南

作为北京邮电大学的毕业生&#xff0c;你是否在为毕业答辩PPT的制作而烦恼&#xff1f;本资源为你提供了精心设计的5套专业PPT模板&#xff0c;专门针对北邮学士和硕士答辩场景优化&#xff0c;让你能够快速完成高质量的答辩展示。 【免费下载链接】北京邮电大学毕业答辩PPT模板…

作者头像 李华