首先来看一下代码,
1 package classTestTwo; 2 3 import java.util.Scanner; 4 5 public class One { 6 7 @SuppressWarnings({ "resource", "unused" }) 8 public static void main(String[] args) { 9 Scanner sc=new Scanner(System.in); 10 //定义数组长度和数组11 //输入数组长度12 System.out.println("请输入数组的长度:");13 int size=sc.nextInt();14 int a[]=new int[size];15 int sum=0;16 int curr=0;17 18 19 //输入数组的内容20 System.out.println("请输入数组内容:");21 for(int i=0;ia[i+1]) {73 //sum1不变74 }75 else {76 sum1=a[i+1];77 }78 }79 sum=sum1;80 System.out.println("当前最大"+sum);81 }82 83 84 }85 86 }
这个代码是比较精简的,因为他的复杂度是O(n),这是在网上找到的比较经典的例子,也是比较容易看懂的。
再来说一下我的单步调试的思路,这个主要是在每一个for循环加上一个中止的因素,这个我添加的就是一个输入任意键,比较容易实行,主要是因为理解起来有一定的难度,所以开始不知道在干嘛。
然后是回滚调试,在理解了单步调试后,加上老师一遍又一遍的解释,不厌其烦地解释,费死劲的解释下,知道回滚是干嘛的了,然后写起来就很简单了,在单步调试后,再加入一个输入回滚位置的语句,得到回滚位置,再从回滚位置重来一遍(不包含单步调试),当然还要清空sum的值,或者再找一个替换他的位置。
这就ok了。