revise pl note1: recursion, edge condition