深度递归:
有时要做压力测试,由于接口是异步的,所以通过递归方式实现测试。但是如果如果递归次数过多,可能会有栈溢出的错误。这时可以采用队列的形式实现相关逻辑。
递归算法实战:
1)求连续签到的算法:
这个算法要抓住2个重点
1:2条线,一条线是实际签到的日期序列,另一条线是实际时间的日期序列。
2:递归的规律是比较上面的2条线,递归不停止,两条线向前推移。
/**
* @param latestDayIndex 绝对的,记录签到记录的索引。
* @param currentCalendarDay 当前天,相对的(并不是指的最近的一天)
* @return
*/
private int getContinuedDays(int latestDayIndex,CalendarDay currentCalendarDay){
CalendarDay latestSignedDate = allSignedDays.get(latestDayIndex);
if(latestDayIndex >= 1){
if(CalendarDayCompareUtil.is2CalendarDaySame(latestSignedDate,currentCalendarDay) || CalendarDayCompareUtil.isTheDay_CurrentDayBefore1Day(latestSignedDate,this.currentCalendarDay)){
//继续往前递归
return getContinuedDays(latestDayIndex - 1,CalendarDayCompareUtil.getBeforeDay(latestSignedDate));
}else{
return latestDayIndex;
}
}else{
return latestDayIndex;
}
}
0 条评论