recursive projection method