天天看点

使用ABAP REDUCE关键字编写的一个非递归阶乘实现

*&---------------------------------------------------------------------*

*& 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.

START-OF-SELECTION.

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

继续阅读