C语言好题解析(二)

这篇具有很好参考价值的文章主要介绍了C语言好题解析(二)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

递归类型

例题1

根据下面递归函数:调用函数Fun(2),返回值是多少(       )
int Fun(int n)
{
	if (n == 5)
		return 2;
	else
		return 2 * Fun(n + 1);
}
A.2 B.4 C.8 D.16

【答案】 D
【分析】
1:递归解题思路就是要注意递归的限制条件,满足限制条件时递归就不再继续,且每次递归调用之后都会接近这个限制条件
2:由题目我们可以知道限制条件为n==5,当我们输入比5小的数时,n是以每次增加1的趋势接近限制条件
流程如下(第一次用画图软件,画的不是很好看)
C语言好题解析(二),c语言,开发语言,算法,笔记,c++,经验分享,c#

例题2

通过用递归的方式实现求第n个斐波那契数
例如
输入:5  输出:5
输入:10, 输出:55
输入:2, 输出:1

【分析】
1:斐波那契数定义为:jack(0)=0,jack(1)=1,jack(n)=jack(n-1)+jack(n-2)(n>=2),总之就是第n个数为n的前两个数相加的和
2:我们根据斐波那契数的定义知jack(1)=1,jack(2)=1,因为jack(0)=0所以不管,因此我们设定条件n=1和n=2时返回1(限制条件),而当n>=2是返回jack(n-1)+jack(n-2)实现递归(趋近于限制条件)
【代码】

int jack(int n)
{
	if (1 == n || 2 == n)
	{
		return 1;
	}
	else
	{
		return jack(n - 1) + jack(n - 2);
	}
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	printf("%d", jack(n));
	return 0;
}

例题3

编写一个函数实现n的k次方,使用递归实现

【分析】
1:根据递归我们需要限制条件,因为n在输入之后就无法改变,因此我们需要对k进行设置,即0==k时我们返回1
2:当k大于0时我们为了让其趋近于限制条件,因此k每次递推后就需要减1
【代码】

int jack(int n, int k)
{
	int sum = 0;
	if (0 == k)
	{
		sum = 1;
		return sum;
	}
	else if (k > 0)
	{
		k = k--;
		sum = n * jack(n, k);
		return sum;
	}
	else
		return 0;
}
int main()
{
	int n, k;
	scanf("%d %d", &n, &k);
	printf("%d ",jack(n, k));

	return 0;
}

例题4

写一个递归函数DigitSum(n),输入一个非负整数
返回组成它的数字之和
例如,调用DigitSum(1729),则应该返回1+7+2+9
它的和是19
输入:1729,输出:19

【分析】
1:在看到返回值为个位 十位 百位…数字时,我们一般都会用到求余(%),这样就可以将每位数单独提出来
2:因为是要用到递归,因此我们需要限制条件,即当n<10时直接返回n(个位数),而要有使递推趋近限制条件就需要用/号,这样就会把最后一位数消去
【代码】

int jack(int n)
{
	if (n < 10)
		return n;
	else
	{
		int sum = n % 10 + jack(n / 10);
		return sum;
	}
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	printf("%d", jack(n));
	return 0;
}

例题5

递归实现求n的阶乘(不考虑溢出的问题)

【分析】
我们以n==1返回1作为限制条件,然后每次n减1
【代码】

int jack(int n)
{
	int sum = 0;
	if (n > 1)
	{
		sum = n * jack(n - 1);
		return sum;
	}
	if (1 == n)
	{
		sum = 1;
		return sum;
	}
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	printf("%d", jack(n));
	return 0;
}

我们对前面的代码进行一些优化如下
【代码】

int jack(int n)
{
if(n==1)
return 1;
return n*jack(n-1);
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	printf("%d", jack(n));
	return 0;
}

例题6

递归方式实现打印一个整数的每一位

【分析】
这道题和例题4几乎一样,所以就不进行分析了
【代码】文章来源地址https://www.toymoban.com/news/detail-653609.html

void jack(int n)
{
	if (n >= 0)
	{
		if (n <= 9)
		{
			printf("%d ", n);
		}
		else
		{
			int sum = 0;
			sum= n % 10;
			jack(n / 10);
			printf("%d " ,sum);
		}
	}
}
int main() 
{
	int n = 0;
	scanf("%d", &n);
	jack(n);
	return 0;
}

到了这里,关于C语言好题解析(二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 名词解析与经验分享(前端)

    目录   1.什么是sass产品 2.下面我想说说事件循环   3. cmd窗口的一些快捷键 4. 组件与插件的区别 5. vue项目嵌入app后调用app方法 6.点击编辑按钮直接回到顶部,输入框光标闪动聚焦 7.短轮询与长轮询 短轮询 长轮询 8.前端moment库 9.移动端-触底刷新实现核心思想 10.jsx语法 11.子

    2024年02月07日
    浏览(45)
  • 【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南

    本篇博客为大家系统全面的介绍华为 od 机试所有内容,其包括如下知识点。 华为 od 机试题目 华为 od 机试流程 华为 od 机试题型分析 华为 od 机试经验分享 华为 od 机试常见问题解答 华为 od 机试难度分析 华为 od 机试面试反馈 华为 od 机试录取流程 华为 OD 机试是指华为公司的

    2024年02月01日
    浏览(71)
  • 模拟赛好题分享

    @ 目录 山茶花 100pts T1区间逆序对 60pts 100pts 区间操作固定套路,转化为前缀操作 dream 20pts 神奇分块 杭州:转化题意,正难则反 正难则反(或者对于这种有删边操作的题), 我们看成反向加边 看题:构造 坐飞机:斜率优化DP 抓颓 : 启发式合并 + stl大杂烩 讨厌的线段树 Foo Fighters

    2024年02月05日
    浏览(58)
  • [职场] 求职如何设置预期 #笔记#经验分享

    求职如何设置预期 在求职的道路上,无论处于哪个年龄阶段,合理的就业期望值才能使我们的愿望与社会的需求相吻合,才能让自己在今后的工作中发挥出最大的实力与能力。 一、结合测评软件,明确求职目标 根据霍兰德职业兴趣测试结果,偏向于什么型人格,最好就寻求

    2024年02月21日
    浏览(45)
  • 【经验分享】分类算法与聚类算法有什么区别?白话讲解

    经常有人会提到这个问题,从我个人的观点和经验来说2者最明显的特征是:分类是有具体分类的数量,而聚类是没有固定的分类数量。 你可以想象一下,分类算法就像是给你一堆水果,然后告诉你苹果、香蕉、橙子分别应该放在哪里。它已经知道每个水果属于哪个类别,所

    2024年02月21日
    浏览(35)
  • [经验] 做完腺样体手术打呼噜很严重怎么办 #媒体#笔记#经验分享

    做完腺样体手术打呼噜很严重怎么办 1、打呼噜很严重怎么办 打呼噜是一种常见的睡眠障碍,不仅让睡眠质量变得很糟糕,也会影响室友或家人的睡眠质量。幸运的是,有许多方法可以减少打呼噜的发生率,从而让睡眠变得更好。 保持良好的睡眠姿势非常重要。睡觉时,枕头

    2024年02月20日
    浏览(62)
  • 实战经验分享:开发同城外卖跑腿小程序

    下文,小编将与大家一同探究同城外卖跑腿小程序的开发实战,包括但不限于技术选型、开发流程、用户体验等多个方面。 1.技术选型 在同城外卖跑腿小程序的开发中,技术选型是至关重要的一环。对于前端,选择了使用Vue.js框架,其灵活性和生态系统的支持使得开发过程更

    2024年02月03日
    浏览(53)
  • 顶会论文投稿经验分享-笔记【CVPR 2023预讲会】

    视频链接:Panel: 顶会论文投稿经验分享与大模型时代下的科研_哔哩哔哩_bilibili 嘉宾: 王琦,上海交通大学计算机系博士生 任星宇,上海交通大学博士三年级研究生 李逸轩,上海交通大学2022级硕士研究生 官同坤,上海交通大学2023级博士生 李逸轩:不管是对比实验、主图、

    2023年04月23日
    浏览(55)
  • 【经验分享】自然语言处理技术有哪些局限性和挑战?

    个人认为,主要是两个难点: 1.语料,通常的语料很好解决,用爬虫从互联网上就可以采集和标注训练。但是我们接触很多项目和客户需求都是专业性很强的,例如:航天材料、电气设备、地理信息、化学试剂 等等。往往很多素材和语料都是很宝贵的,而且都是这些企业的内

    2024年02月21日
    浏览(47)
  • [word] word如何设置每行字符数 #笔记#经验分享#媒体

    word如何设置每行字符数 如何设置每行字符数? 设置WORD设定每行中的字符数和每页中的行数的具体步骤如下: 我们需要准备的材料分别是:电脑、word文档。 1、首先我们打开需要编辑的word文档,点击打开“页面布局”。 2、然后我们在弹出来的子菜单栏中点击打开页面设置

    2024年02月22日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包