*&---------------------------------------------------------------------* *& Report ZABAP101_RECURSION *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT zabap101_recursion. *----------------------------------------------------------------------* * CLASS lcl_math DEFINITION *----------------------------------------------------------------------* * *----------------------------------------------------------------------* CLASS lcl_math DEFINITION. PUBLIC SECTION. METHODS execute_exponentiation IMPORTING base TYPE i expoent TYPE i RETURNING value(re_power) TYPE i. PRIVATE SECTION. DATA: interaction TYPE i, power TYPE i VALUE 1. ENDCLASS. "lcl_math DEFINITION *----------------------------------------------------------------------* * CLASS lcl_math IMPLEMENTATION *----------------------------------------------------------------------* * *----------------------------------------------------------------------* CLASS lcl_math IMPLEMENTATION. METHOD execute_exponentiation. ADD 1 TO interaction. IF interaction <= expoent. power = me->execute_exponentiation( base = base expoent = expoent ). MULTIPLY power BY base. ENDIF. re_power = power. ENDMETHOD. "execute_exponentiation ENDCLASS. "lcl_math IMPLEMENTATION DATA: r_exp TYPE REF TO lcl_math, v_power TYPE i. PARAMETERS: p_base TYPE i DEFAULT 2, p_exp TYPE i DEFAULT 3, p_rec AS CHECKBOX. INITIALIZATION. CREATE OBJECT r_exp. START-OF-SELECTION. IF p_rec = 'X'. v_power = r_exp->execute_exponentiation( base = p_base expoent = p_exp ). ELSE. v_power = p_base ** p_exp. ENDIF. WRITE: / 'Power: ', v_power.