Use ABAP REDUCE keywords written in a non-recursive factorial achieve

*&---------------------------------------------------------------------*
*& Report ZAPPEND
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*


REPORT zcd_functional_factorial.

CLASS lcl_factorial DEFINITION.
  PUBLIC SECTION.
  METHODS factorial
    IMPORTING
      !n TYPE i
    RETURNING
      VALUE(result) TYPE i.
ENDCLASS.

CLASS lcl_factorial IMPLEMENTATION.
  METHOD factorial.
    result = COND i( WHEN n = 0
                       THEN 1
                     ELSE
                       REDUCE i( INIT r = 1
                                    FOR  i = 1 THEN i + 1 WHILE i <= n
                                    NEXT r = r * i ) ).
   ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.
  cl_demo_output=>display( NEW lcl_factorial( )->factorial( 9 ) ).

For more Jerry's original article, please pay attention to the public number "Wang Zixi":

Released 6288 original articles · won praise 617 · views 980 000 +

Guess you like

Origin blog.csdn.net/i042416/article/details/103950448