递归与泛型

递归的本质是将一个大问题分解为一个简单的小问题然后逐步推进,比如说将1234打印出4,3,2,1的顺序,那么本质上就是n%10,可以将1234分解不断除以十,得到四个 个位数。

递归法则:

1、基准,即有穷,最终至少有一个情形是已知的,比如说第一个数或者最后一个数是可以得知的。

2、不断推进,能不断嵌套执行靠近基准。

3、递归的方法中不要做重复性的工作。

/**
* @author wulei
* 递归测试
*/

public class RecursiveTest {
public static void main(String[] args){
printAll(4267);
}

private static void printAll(int n){
if(n > 10){
printAll(n/10);//变量的值计算机会记录,当执行第二次递归时,堆栈上会创建一批新的变量,除非递归调用返回,不然没有机会执行之前的变量。       
}
System.out.println(n%10);
}

}

 

 泛型~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

泛型的意义-参数类型化:https://www.jianshu.com/p/5179ede4c4cf

 

1、基本数据类型可以自动拆箱装箱;比如定义的方法setXY(Integer X,Integer Y),可以使用setXY(1,2),编译器会在幕后插入一个对Integer构造方法的调用(装箱),反之从获取int x = getXY()(拆箱)。

2、泛型方法前需要将泛型的参数放在返回值之前。

3、当且仅当在实例化的时候指出具体的参数类型。

/**
* 泛型测试
* @author wulei
*/

public class GenericTest {
protected static class CaseCompare implements Comparator<String>{//此处内部类必须静态,以此在main()中执行的时候可以直接实例化

@Override
public int compare(String o1, String o2) {
return o1.compareToIgnoreCase(o2);//顺序为123ABCabc   即数字最小,然后是大写字母,最后是小写字母。
}

}

public static <T> T findMax(T[] arr,Comparator<T> cmp){
int maxIndex = 0;
for(int i = 0; i < arr.length; i++ ){
if(cmp.compare(arr[i], arr[maxIndex]) > 0){
maxIndex = i;
}
}
return arr[maxIndex];
}


public static void main(String[] args){
String[] arr = {"a","c","b"};
System.out.print(findMax(arr, new CaseCompare()));
}
}

 

参考泛型来源:http://blog.csdn.net/ghui23/article/details/52137115

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值