[rui] 3rd way, I just want the recursive way could be seen more pure...