递归及二维数组

方法的递归调用:
示例:
sum(n) 代表等差数列的前n项的和
sum(n) = n + sum(n-1) and n>=1;
1 2 3 4 5
static int sum(int n){
if(n==1)
return n;
return n + sum(n-1);
}
递归调用的特点:
1 思考逻辑简单
2 性能差(需要在栈中保存全部的临时变量)
3 必须有结束条件
4 大多数的递归都可以改成循环代码实现。
一般情况下:循环解决问题的性能高于递归解决。

练习:
1: 斐比纳切数列的第n项 1 1 2 3 5 8 13 ...
f(n) = f(n-1)+f(n-2) and n>=3, f(1)=f(2)=1

二维数组
1 Java的数组是对象,是在内存堆中分配的
int[] ary = new int[]{2,3,4};
ary = null;
new运算返回的是堆对象的首地址
引用变量ary的值是地址值,引用变量通过地址引用
操作堆对象。
引用变量可以赋值为null,表示不引用任何对象。
不被任何引用所引用的对象,是内存垃圾,将被垃圾
收集器回收。
2 二维数组
1 Java其实没有真正的二维数组
2 Java使用数组的数组实现了二维数组,
一维数组套一维数组实现
int[][] ary = new int[2][3];
ary[1][1]=5;
int[] a = ary[1];
3 声明:int[][] ary;
4 初始化:
1 动态初始化
int[][] ary = new int[2][3];
指定第一维长度,创建第一维数组,
第一维每个元素是 null
int[][] ary = new int[2][];
System.out.println(ary[0]);//null
System.out.println(ary[0][0]);//异常
例题
以上代码的结果
A null null B null 0
C null 和异常 D 编译错误
给定成员动态初始化
int[][] ary = new int[][]{{2,3},{3,4}};
静态初始化,不能用来赋值:
int[][] ary = {{2,3},{3,4}};

数组的迭代:
1 迭代就是遍历,就是对多个元素逐一进行处理。
2 一维数组的遍历也叫一维数组迭代
3 二维数组的迭代,就是嵌套的一维数组的迭代

作业
1 全部实现课堂代码
2 实现一个二维整数数组 16×16
int[][] ary = new int[16][16];
使用二维数组的迭代把每一个数组元素填充为-1。
3 使用循环实现计算斐比纳切数列的第n项
使用循环计算 等差数列的和 1+2+3+4...
4 使用递归实现计算n的阶乘
n! = 1*2*3*...*n
或者
n! = f(n) = f(n)*f(n-1) 并且 f(1)=1
5 使用循环实现n!




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值