一:递归时的逻辑思路不容易想明白,容易敲代码的时候不给定递归的限制条件,造成递归太深占内存溢出错误 public class BuSiShentu {
public static void main(String[] args) {
long q1 = System.currentTimeMillis();
double[] arr=new double[100];
arr[0]=1;
arr[1]=1;
for (int i = 2; i < arr.length; i++) {
arr=arr[i-1]+arr[i-2];
}
System.out.println(arr[arr.length-1]);
long m1 = System.currentTimeMillis();
System.out.println("for用时"+(m1-q1));
long q2 = System.currentTimeMillis();
double duishu = duishu(100);
System.out.println(duishu);
long m2 = System.currentTimeMillis();
System.out.println("递归用时:"+(m2-q2));
}
public static double duishu(double i){
if (i==1||i==2){ //条件
return 1;
}else {
return duishu(i-1)+duishu(i-2);
}
}
} 二.判断字符串数组中有数字字符就把包含数字的元素删除,五一假期的一道作业题. 错误原因分析: 敲完之后运结果只有一个元素,后分析有可能是第二层循环多次删除第一层循环中的元素.后载第二层循环判断中加入 break完美解决. import java.util.ArrayList;
//String arr[]={“0af3s2sf”,”s6ds1”,”jjww”,”lailai”}
public class ShanchuShuZi {
public static void main(String[] args) {
String arr[]={"0af3s2sf","s6ds1","jjww","lailai"};
removenumber(arr);
}
public static void removenumber(String[] s){
ArrayList<String> list=new ArrayList<>();
for (int i = 0; i < s.length; i++) {
list.add(s);
}
for (int i = list.size()-1; i >=0; i--) {
String s1 = list.get(i);
for (int i1 = 0; i1 < s1.length(); i1++) {
if (s1.charAt(i1)>='0'&&s1.charAt(i1)<='9'){
System.out.println(i);
System.out.println(list.size());
System.out.println("----------");
list.remove(i);
break; 易错处
}
}
}
System.out.println(list);
}
}
|
|