走台阶问题 递归计算时需要注意重复计算的问题
long findRootReferrerId(long actorId) {
Long referrerId = select referrer_id from [table] where actor_id = actorId;
if (referrerId == null) return actorId;
return findRootReferrerId(referrerId);
}
生产环境不能这么用
- 多次查询库 类似N+1查询
- 如果递归很深,可能会有堆栈溢出的问题
- 脏数据 如果 A 的推荐人是 B,B 的推荐人是 C,C 的推荐人是 A,这样就会发生死循环。
想查询某一个人的最终推荐人应该怎么做呢?