文档库 最新最全的文档下载
当前位置:文档库 › java基础006

java基础006

java语言基础 day006
2012/09/07
=======================

1,二分查找法
前提:数组是有序的 看案例:ArraysDemo.java



2,方法的递归调用(他的缺点是严重影响性能,有栈溢出的风险)

1什么是递归调用:是方法实现时候直接或间接调用了方法本身
例如:f(n) = 1+2+...n=f(n-1)+n 并且 f(1)=1 看案例:Demo1.java


1)方法的递归调用
a.java的栈:是jva进程启动时候的内存中开辟的存储空间
栈内存的利用方式LIFO(后进先出),Java所有局部变量 都 在栈中
分配(压入),方法的参数也是局部变量,局部变量 在离开作用域
时候回收 就是从栈中弹出(删除).

2)java方法调用使用栈实现,递归调用就是栈实现的
3)递归时候 要按照递归深度分配全部临时 变量,栈开销很大,性能不好,要注意不要超过栈的大小,并且一定要给出条件
,否则会造成栈溢出错误.StackOverFlowError
递归注意:
StackOverFlowError运行错误
NullPointerException运行异常
编译错误

案例:1)n!=1*23*...*n=n*f(n-1),且f(1)=1
2) f(n) = 1+2+...n=f(n-1)+n 并且 f(1)=1
3)1/1+1/2+1/3+...+n=f(n-1)+1/n &&f(1)=1



关于递归:必须知道了解,使用不多,解决问题比较简洁,但是有性能问题和风险
关于字符串处理:(看案例:Demo.java)
题目:1)将字符串“aaa,bb,cde,gg”拆分为
数组[“aaa”,"bb","cde","gg"]
str ="aaa,bb,cde,gg";
char c;
char[] buf ={};
String[] ary={};
a.扫描字符串的每个字符
b.检查当前字符是否为‘,’
如果是‘,'
保存字符数组
就创建新的字符数组chs
返回(1)
c.将当前字符追加到字符数组chs

2)将字符串“aaaabbbcccc”转换为:“4a3b4c"

str ="aaaabbbcccc";
String s="";发回结果
char[] buf={};
char c; 当前字符
char prev;前一个字符

a,取每一个字符为c
b,比较前一个字符和当前字符是否一样
如果不同:统计buf中的字符数量,并且将结果追加到s中,
清空buf
c,追加当前字符到buf
d.设置前一字符为当前字符
e.返回a


作业:1)将本周的全部案例,实现一遍,不是看一遍,是写一遍
2)再研究选项作业




相关文档
相关文档 最新文档