recurisive,pointer fixed