image.png
    走台阶问题 递归计算时需要注意重复计算的问题

    1. long findRootReferrerId(long actorId) {
    2. Long referrerId = select referrer_id from [table] where actor_id = actorId;
    3. if (referrerId == null) return actorId;
    4. return findRootReferrerId(referrerId);
    5. }

    生产环境不能这么用

    1. 多次查询库 类似N+1查询
    2. 如果递归很深,可能会有堆栈溢出的问题
    3. 脏数据 如果 A 的推荐人是 B,B 的推荐人是 C,C 的推荐人是 A,这样就会发生死循环。

    想查询某一个人的最终推荐人应该怎么做呢?