在leetcode浏览评论偶遇递归,惊为天人,我将片段摘抄如下:
public ListNode add(ListNode l1, ListNode l2, int bit) {
if (l1 == null && l2 == null && bit == 0) {
return null;
}
int val = bit;
if (l1 != null) {
val += l1.val;
l1 = l1.next;
}
if (l2 != null) {
val += l2.val;
l2 = l2.next;
}
ListNode node = new ListNode(val % 10);
node.next = add(l1, l2, val / 10);
return node;
}
方法操作的容器是链表,真的优雅。
OK,我个人由递归就会联想到迭代,所以记录一下。
递归,简单说在使用过程中会直接或间接的操作自己,最终会有一个出口,不会无限制操作。
迭代,私以为和遍历很像,java部分容器中有迭代器,作用不言而喻。
举一个简单例子:
//递归
public static int method1(int n){
if (n>0){
return 0;
}else {
return method1(n-1);
}
}
//迭代
List list = new ArrayList();
list.add(2);
list.add(3);
//迭代器
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
主要区别就在于递归会重复操作自己了,ok,完。