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

嵌入式开发学习日志Day11

一、函数的递归调用

        在调用一个函数的过程中,又出现直接或者间接的调用函数本身,称之为函数的递归调用;

函数的递归调用是使用大量的内存空间完成程序进行的;

1.间接调用

        2.直接调用

   注意: 上图仅为示意,不可以这样使用;这样使用会导致栈区空间被填满,之后数据无法入栈,程序崩溃

eg:(1)输入一个数,打印该数的菲伯利亚数列

程序:

 

         (2)输入一个n,求n的阶乘;

程序:

         (3)求第n个数的菲伯利亚数列的值;

程序:

        (4)汉诺塔问题:

n:1步骤盘号
11AC

n:2步骤盘号
11AB
22AC
31AB

n:3步骤盘号
11AC
22AB
31CB
43AC
51BA
62BC
71AC

程序:

 

二、 数组作为函数参数

         数组传递两个参数:数组名(数组首元素地址)  和    数组长度

        数组名中传递的为数组的首元素地址,所以,当数组名作为实参时,被调用函数可以修改主调函数的值;

 eg:

        (1)求一个数组中所有元素的和;

 程序:

        (2) 求一个数组中的最大值;

程序:

(3)逆序输出一个数组;

程序:

(4) 用二分查找法查找数组中的元素;

 程序:

 (5)将小写字符转换为大写字符,函数部分;

程序:

(6) 输出字符串的函数部分;

程序:

(7) 几种string的函数部分;

程序:

         (8)将字符数组中的值但需输出;

程序:

 三、课后练习

1、编写程序实现int atoi(char s[]),实现字符串转整型;

程序:

运行结果:

2、编写程序实现void itoa(char s[], int n);实现整型转字符串; 

程序:

运行结果:

 3、用函数实现选择,冒泡和插入法排序。

 (1)选择排序法

程序:

(2)冒泡排序:

程序:

(3)插入排序:

程序:

 

运行结果:

 

http://www.xdnf.cn/news/202465.html

相关文章:

  • GESP2024年9月认证C++八级( 第二部分判断题(6-10))
  • 在Linux系统中安装Anaconda的完整指南
  • (001)Excel 快捷键
  • 【RabbitMQ消息队列】(二)交换机模式详解
  • MTKAndroid12-13-开机应用自启功能实现
  • 【差分隐私】目标扰动机制(Objective Perturbation)
  • Android平台Unity引擎的Mono JIT机制分析
  • 前端如何使用Mock模拟数据实现前后端并行开发,提升项目整体效率
  • 计算机视觉进化论:YOLOv12、YOLOv11与Darknet系YOLOv7的微调实战对比
  • 单片机-89C51部分:7、中断
  • ZYNQ-自定义呼吸灯IP核以及PS-PL数据发送接收
  • 【Java学习笔记】传参机制
  • Vue 2 中 Vue 实例对象(vm)的所有核心方法,包含完整示例、使用说明及对比表格
  • 【Java】 使用 HTTP 响应状态码定义web系统返回码
  • 继承(c++版 非常详细版)
  • linux 环境下 c++ 程序打印 core dump 信息
  • 滑动窗口模板
  • 【基础知识】常见的计算公式(一)
  • java借助NIO、链表、跳表模拟实现redis
  • CDGP|如何建立高效的数据治理团队?
  • 【强化学习系列】贝尔曼方程
  • mysql模糊多次OR查询某一个字段,针对这个字段进行查询分组
  • Marin说PCB之----板材的替换注意事项
  • vite创建vue3项目并进行配置
  • DIFY教程第三弹:构建一个智能生成图片的Agent
  • 【分布式系统中的“瑞士军刀”_ Zookeeper】三、Zookeeper 在实际项目中的应用场景与案例分析
  • openGauss DB4AI与scikit-learn模块对比探究
  • 基于强化学习的用于非刚性图像配准的引导式超声采集|文献速递-深度学习医疗AI最新文献
  • HTML标记语言_@拉钩教育【笔记】
  • 座舱系统香氛模块概念