1.函数递归起(复习)

news2024/12/27 13:31:11

1.debug版本可以调试,realse版本不能调试

2.在realse版本中,代码已经得到了优化(编译器可能会自作主张地对代码进行优化),在大小和速度上都是最优的

3.ctrl + F5 是开始执行不调试

4.设置好断点后,用F5到达该断点,相当于是到达了该断点的那个位置程序就先停止运行了

5.设立断点条件时,条件可以是表达式,但是不能是什么函数之类的

6.好用的VS快捷键搜

7.可以这样看监视

a64a6b5700794c909a43eec9857e336f.png

8.可以用各种进制来表示内存,只是VS用16进制来展示而已

9.main函数也是函数

10.有些直接运行发现不了的程序错误在调试时能发现

11.每一次函数的运行都要在栈上开辟一块空间

12.递归的思想:把一个大型复杂问题层层转化为一个与原问题相似,但规模较小的子问题来求解;直到子问题不能再被拆分,递归就结束了.所以递归的思考方式就是把大事化小的过程

13.递归在书写的时候,有2个必要条件:
1.递归存在限制条件,当满足这个限制条件的时候,递归便不再继续
2.每次递归调用之后越来越接近这个限制条件

14.0的阶乘是1

15.上边的那个函数递归例子有一个是:

求5的阶乘

根据大事化小原则,将5!化为5*4!

再将4!化为4*3!

再将3!化为3*2!

再将2!化为2*1!

再将1!化为1*0!

那么我设立一个函数func(功能是求得某个数的阶乘)

那么我只需部分写为

return n * func(n-1);

16.再如:

输入一个数 ,打印这个数的每一位

如:1234,打印1 2 3 4 

我们将此问题化为打印1 2 3和打印4

再将打印123化为打印1 2和打印3

再将打印12化为打印1和打印2

这就是一个大事化小的过程

17.多用迭代而少用递归

18.迭代里边有一个方式就是循环

19.迭代的效率往往比递归的效率更高

20.比如求斐波那契数

183a280b37854dfeae54da4a24a96310.png

当我们输入50时,递归层次太深,运行时间太久

(输入40时,第3个斐波那系数就运行了3千九百多万次)

(栈深50层还不会溢出)

21.那么就用迭代

代码:

22.所以:

递归和循环的选择:

1.如果使用递归写代码,非常容易,写出的代码没问题,那就使用递归;

2.如果使用递归写出的问题,是存在明显的缺陷,那就不能使用递归,得用迭代的方式处理

学习数据结构的时候,会经常使用递归

23.训练:

青蛙跳台阶

青蛙跳台阶(C语言)-CSDN博客

汉诺塔问题

汉诺塔问题(C语言)-CSDN博客

24.操作符的分类更新搜

25. / 的两端有一个为小数则得到的就是小数

26.15用十六进制表示可以是F也可以是f

27.0开头的数字是八进制

例:0177是127

%o 是按照8进制的形式来打印

28.0x开头的是16进制的数字

例:0x17是23

%x 是按照16进制的形式来打印

29.2进制前边不加区分

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1306138.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux shell编程学习笔记35:seq

0 前言 在使用 for 循环语句时,我们经常使用到序列。比如: for i in 1 2 3 4 5 6 7 8 9 10; do echo "$i * 2 $(expr $i \* 2)"; done 其中的 1 2 3 4 5 6 7 8 9 10;就是一个整数序列 。 为了方便我们使用数字序列,Linux提供了…

UDS DTC状态掩码/DTC状态位

文章目录 简介用途依赖知识1、测试(test)2、操作循环(operation cycle)3、老化(aging) DTC状态位1、Bit 0:Test Failed2、Bit 1:Test Failed This operation cycle3、Bit 2&#xff…

【大数据】Hadoop生态未来发展的一些看法

大数据的起源 谷歌在2003到2006年间发表了三篇论文,《MapReduce: Simplified Data Processing on Large Clusters》,《Bigtable: A Distributed Storage System for Structured Data》和《The Google File System》介绍了Google如何对大规模数据进行存储…

基于51单片机的语音识别控制系统

0-演示视频 1-功能说明 (1)使用DHT11检测温湿度,然后用LCD12864显示,语音播放,使用STC11l08xe控制LD3320做语音识别, (2)上电时语音提示:欢迎使用声音识别系统&#xf…

数据结构篇-顺序表及单项链表

目录 一、学习目标 二、顺序表 1. 线性表 1.1 概念 1.2 举例 2. 顺序表 2.1 基本概念 2.2 基本操作 2.3 顺序表优缺点总结 三、单项链表 1. 基本概念 2. 链表的分类 无头节点: 有头节点: 增添加节点 查找节点 删除节点 链表遍历 销毁链…

【ARM Trace32(劳特巴赫) 使用介绍 13 -- Trace32 断点 Break 命令篇】

文章目录 1. Break.Set1.1 TRACE32 Break1.1.1 Break命令控制CPU的暂停1.2 Break.Set 设置断点1.2.1 Trace32 程序断点1.2.2 读写断点1.2.2.1 变量被改写为特定值触发halt1.2.2.2 设定非值触发halt1.2.2.4 变量被特定函数改写触发halt1.2.3 使用C/C++语法设置断点条件1.2.4 使用…

折点计数 C语言xdoj46

问题描述 给定n个整数表示一个商店连续n天的销售量。如果某天之前销售量在增长,而后一天销售量减少,则称这一天为折点,反过来如果之前销售量减少而后一天销售量增长,也称这一天为折点,其他的天都不是折点。如图…

AI大模型行业2024年上半年投资策略:大模型多模态化趋势显著,AI应用侧加速繁华

今天分享的AI系列深度研究报告:《AI大模型行业2024年上半年投资策略:大模型多模态化趋势显著,AI应用侧加速繁华》。 (报告出品方:东莞证券) 报告共计:30页 1.传媒行业行情和业绩回顾 1.1行业…

数据可视化:解析跨行业普及之道

数据可视化作为一种强大的工具,在众多行业中得到了广泛的应用,其价值和优势不断被发掘和利用。今天就让我以这些年来可视化设计的经验,讨论一下数据可视化在各个行业中备受青睐的原因吧。 无论是商业、科学、医疗保健、金融还是教育领域&…

spring 笔记一 spring快速入门和配置文件详解

Spring简介 Spring是分层的 Java SE/EE应用full-stack 轻量级开源框架,以 IoC(Inverse Of Control:反转控制)和AOP(Aspect Oriented Programming:面向切面编程)为内核。 提供了展现层SpringMV…

如何FL Studio显示中文?切换语言教程

你是不是也在为fl studio的英文界面而苦恼?你是不是也想让你的fl studio 说中文,方便你制作音乐?你是不是也在网上找了很多教程,却发现都是复杂的,或者已经过时的?如果你的答案是肯定的,那么你来…

c++国际象棋有人机qt5.9.9启动chesss

项目简介: 利用C的知识和QT以及一些自行拓展的新知识,实现国际象棋的开发。 使自己更加深层的理解和掌握c并在程序中展现出来,同时开发编程的思想和能力,以及扩展知识面,学习一些课上没有涉及的内容。同时通过阅读一…

应用程序映射的 5 个安全优势

现代企业依靠无数的软件应用程序来执行日常运营。这些应用程序相互连接并协同工作以提供所需的服务。了解这些应用程序如何相互交互以及底层基础设施对于任何组织都至关重要。这就是应用程序映射概念的用武之地。 顾名思义,应用程序映射是创建应用程序架构&#xf…

Java键值对Pair的使用方式和操作流程

Java键值对Pair的使用方式和操作流程 什么是键值对 键值对是一种常见的数据结构,它由一个唯一的键(key)和与之关联的值(value)组成。键和值之间存在一种映射关系,通过键可以查找或访问对应的值。 在键值对…

设计模式——原型模式(创建型)

引言 原型模式是一种创建型设计模式, 使你能够复制已有对象, 而又无需使代码依赖它们所属的类。 问题 如果你有一个对象, 并希望生成与其完全相同的一个复制品, 你该如何实现呢? 首先, 你必须新建一个属于…

【vue实战项目】通用管理系统:信息列表,信息的编辑和删除

本文为博主的vue实战小项目系列中的第七篇,很适合后端或者才入门的小伙伴看,一个前端项目从0到1的保姆级教学。前面的内容: 【vue实战项目】通用管理系统:登录页-CSDN博客 【vue实战项目】通用管理系统:封装token操作…

【日积月累】Spring中的AOP与IOC相关问题详解

Spring中的AOP与IOC 1.前言2.Spring AOP(面向切面编程)2.1 AOP的实现过程2.2 AOP代理模式的类型2.2.1JDK的动态代理2.2.2CGLIB的动态代理 2.3AOP应用常见场景2.3.1日志记录 2.4对AOP的理解 3.Spring IOC(Inversion of Control,控…

【JVM从入门到实战】(五)类加载器

一、什么是类加载器 类加载器(ClassLoader)是Java虚拟机提供给应用程序去实现获取类和接口字节码数据的技术。 类加载器只参与加载过程中的字节码获取并加载到内存这一部分。 二、jdk8及之前的版本 类加载器分为三类: 启动类加载器-加载Ja…

Linux驱动入门 —— LED点灯驱动程序

目录 IMX6ULL 的 GPIO 操作方法 GPIO 操作相关名词 IMX6ULL 的 GPIO 模块结构 GPIO 模块内部 读 GPIO​编辑 写 GPIO​编辑 LED 点灯驱动程序 字符设备驱动程序框架 编写驱动程序的步骤: 先编写驱动程序代码: 再编写测试程序代码:…

【华为数据之道学习笔记】4-2信息架构原则:建立企业层面的共同行为准则

信息架构承载了企业如何管理数据资产的方法,需要从整个企业 层面制订统一的原则,这些原则不仅是对数据专业人员的要求,也是对业务的要求,因为业务才是真正的数据Owner。所以,公司所有业务部门都应该共同遵从信息架构原…