add recursive power function