深度递归
       有时要做压力测试,由于接口是异步的,所以通过递归方式实现测试。但是如果如果递归次数过多,可能会有栈溢出的错误。这时可以采用队列的形式实现相关逻辑。

递归算法实战:

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 条评论

发表回复

您的电子邮箱地址不会被公开。