使用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.
ENDCLASS.

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

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

发布了6288 篇原创文章 · 获赞 617 · 访问量 98万+

猜你喜欢

转载自blog.csdn.net/i042416/article/details/103950448