函数(二)(Day11)

1.*****函数嵌套调用 
  递归 
      -- 自己调用自己 
      
  实现思想:
  要素:
   1.递推关系 //问题n和问题n-1
   2.递推结束的条件 
   
  递归也是一种特殊的循环
  递归的过程,实际上是函数的调用,而函数调用需要 使用 栈空间(内存空间)
  
 

2.*****栈:
  1. 是一种数据结构 FILO (First In Last Out)
  2. 内存上的一块空间 
  3. 大小肯定是有限的
  4. 可以存放函数调用数据 
  5. 局部变量(自动变量)  
    自动申请,自动释放 

  32位     --- 4G内存空间
  32位 地址总线 32位 
  2^32 => 2^10 * 2^10 * 2^10 *2^2 
          1024  1024   1024    4 
          1K    1M     1G    
3.*****堆:
 1. 空间很大
 2. 手动申请,手动释放 //后面讲 
 
4.*****字符串常量区:
  "hello" //字符串常量 
  不能被修改 - 只读 
全局区(静态区)
  全局变量的 
代码区
   存放代码的
   
程序 = 数据 + 代码

5.*****汉诺塔:
递归的思路

问题n 
  |--问题n-1 与 n
       |--问题n-2 
            |---
               ...结束条件 
               
hanoi(64)
   |---hanoi(63)
         |---hanoi(62)
              |---
                  ...
                     hanoi(1)
                     
思路:
//hanoi(n)

//n = 3
1. 将n-1格盘子, 从 A 起始柱 移动 B 辅助柱子
2. 将第n格盘子,从A移动到C
3. 再将n-1盘子,从B 移动到 C


//n = n-1 => 2
1. 将n-1格盘子, 从 A(起始柱子) 移动 C 辅助柱子
2. 将第n格盘子,从A (起始柱子) 移动到B (目标柱子)
3. 再将n-1盘子,从B 移动到 C

6.*****数组作为函数参数 
函数参数:
  形参变量 
  实际参数 
  

int a[3] = {1,2,3};

//情况1
数组元素作为函数参数 
注意:
  //1.数组元素的类型 是否 与形参类型一致 
 
//情况2
想把整个数组传入到函数中 

//形参 和 实参 规则
1.个数相同
2.类型匹配 
3.一一对应 


数组名 能代表 整个数组  //给实参时,给定 数组名 

int a[10]; //a 数据类型 int[10]

注意:
  1.数组 作为函数 参数 ,
    形式上,保持一致,被调函数中 就可以 访问到主调函数中 数组的数据
    
    一维整型数组作为函数参数
    形参 写成数组的形式 同时需要 一个接受数组长度的形参 
    实参 传数组名,传数组长度
  2.数组作为函数参数,
    因为传的是数组名,而数组名是数组首元素的地址,所以相当于将数组空间的地址传给了被调函数,
    而被调函数,通过数组下标运算,可以直接访问到了主调函数中对应数组空间的数据。
    所以,数组传参的这种方式,可以实现,被调函数修改主调函数中的数据 
    
总练习题:

1.

2.

3.

4.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值