函数(2)

文章探讨了函数的使用,包括传址、返回值增加以及函数嵌套调用的概念。强调了链式访问和静态库的生成。此外,详细阐述了递归的原理和应用,如计算字符串长度、斐波那契数列,指出递归可能导致栈溢出,而迭代通常更高效。还提到了汉诺塔和青蛙跳台阶问题作为递归问题的例子。
摘要由CSDN通过智能技术生成

4.26 函数(2)

写一个函数,使得每次调用时,num+1

法一:传地址     法二:return num+1.

函数的嵌套调用:比如 写了一个函数A,里面调用了函数B。

可以嵌套调用,不可以嵌套定义:一个函数的定义里面嵌套了另一个函数的定义。

链式访问:把一个函数的返回值变成另一个函数的参数,如把strlen的返回值作为printf的参数

Printf 打印几个字符就返回几

打印4321

函数的声明与定义

先声明后使用(可以不写形参) 定义也是一种特殊的声明

函数的声明一般放在头文件中

分模块的好处,把代码的实现和声明分离

项目名字右击-属性-常规-配置类型-静态库-生成.lib文件  .lib文件是二进制代码,配合.h食用。 保证代码隐私性。

↑导入静态库 写在调用add函数的.c文件里面

函数递归:程序调用自身-函数自己调用了自己,递推-回归

递归不能跳出会死递归,栈溢出报错。

此处n/10给跳出递归创造了条件

分开打印多位数的每一位

函数的调用堆栈-函数栈帧

关于《函数的栈帧创建和销毁》

每一次函数调用,都要在栈区上分配一块内存空间,用来保存函数在调用过程中的上下文信息。

对于上面的函数,假设输入1234,栈区是这样开辟空间的,回收是从上到下的

编写函数不允许创建临时变量,求字符串长度。利用递归实现。

递归与迭代

迭代-把一件事情反复地去做-循环就是一种迭代

求n的阶乘

求第n个斐波那契数列-前两个数的和是第三个数

递归方法: n较大时效率较低

↑效率低

用迭代(循环)效率高一些

递归遇到问题时,如何解决?

学习递归,要学会抽象

汉诺塔问题

青蛙跳台阶问题,青蛙可以一次跳一个台阶也可以一次跳两个台阶,最终是斐波那契数列。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值