Skip to content

Instantly share code, notes, and snippets.

@furlan
Created June 24, 2012 14:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save furlan/2983347 to your computer and use it in GitHub Desktop.
Save furlan/2983347 to your computer and use it in GitHub Desktop.
ZABAP101_RECURSION
*&---------------------------------------------------------------------*
*& 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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment