It is possible to print non-Borachian sequences in JavaScript using FunctionGenerator provided by ES6. See this article for more details.

There are many ways to implement this requirement in ABAP as well.

The following report uses recursion and ABAP internal table respectively to print the non-Borachian sequence.

REPORT Z_FIBO. PARAMETERS: N type i, v1 RADIOBUTTON GROUP v default 'X', v2 RADIOBUTTON GROUP v. data: f type i, t type i. data: product_guid type comm_product-product_guid. get run time field t. case 'X'. when v1\. perform fibonacci using n changing f. when v2\. perform fibonacci_2 using n changing f. endcase. write: / 'Fibonacci(', n, ') =', f. get run time field t. write: / 'Runtime', t, 'microseconds'. *&---------------------------------------------------------------------* *& Form fibonacci *&---------------------------------------------------------------------* form fibonacci using in type i changing fib type i. data: f_1 type i, f_2 type i, n_1 type i, n_2 type i. case in. when 0\. fib = 1. when 1\. fib = 1. when others. n_1 = in - 1. n_2 = in - 2. perform fibonacci using n_1 changing f_1. perform fibonacci using n_2 changing f_2. fib = f_1 + f_2. endcase. endform. "fibonacci *&---------------------------------------------------------------------* *& Form fibonacci_2 *&---------------------------------------------------------------------* form fibonacci_2 using in type i changing fib type i. data: f_1 type i, f_2 type i, n_1 type i, n_2 type i, l type i. data: fibo type table of i. append 1 to fibo. " fibonacci(0) append 1 to fibo. " fibonacci(1) n_1 = 1. n_2 = 2. l = in - 1. do  l times. read table fibo index n_1 into f_1. read table fibo index n_2 into f_2. fib = f_1 + f_2. add 1 to n_1\. add 1 to n_2. append fib to fibo. enddo. endform. "fibonacci_2Copy the code

Both of these solutions are relatively traditional, but let’s take a look at non-Borachi printing using the new keyword COND provided by ABAP 7.40:

REPORT z. CLASS lcl_fibonacci DEFINITION. PUBLIC SECTION. TYPES: zint_tab TYPE TABLE OF int4 WITH EMPTY KEY. METHODS fibonacci IMPORTING ! n TYPE i RETURNING VALUE(fib_numbers) TYPE zint_tab. ENDCLASS. CLASS lcl_fibonacci IMPLEMENTATION. METHOD fibonacci. fib_numbers = COND #( WHEN n = 0 THEN VALUE #( ( |0| ) ) WHEN n = 1 THEN VALUE #( ( |0| ) ( |1| ) ) ELSE VALUE #( LET fn1 = fibonacci( n - 1 ) x = fn1[ lines( fn1 ) ] y = fn1[ lines( fn1 ) - 1 ] IN ( LINES OF fn1 ) ( x + y ) ) ). ENDMETHOD. ENDCLASS. START-OF-SELECTION. cl_demo_output=>display( NEW lcl_fibonacci( )->fibonacci( 10 ) ).Copy the code

Printout:

For more of Jerry’s original technical articles, please follow the public account “Wang Zixi” or scan the following QR code: