#1
|
||||
|
||||
Optimizacion de codigo?
Saludos Aqui practicando algo de recursividad a mis viejos tiempos con C jajaja bueno pues realice un reacomodo de mayor a menor de una serie de 5 numeros claro esto podria ser loco pero pues era para entretenerme ok, ahora creen que se podria hacer mas chiquito mi codigo algo asi como optimizarlo u otra manera de hacerlo ?
*&---------------------------------------------------------------------* *& Report ZDUMMY_RMR60 * *& * *&---------------------------------------------------------------------* *& * *& * *&---------------------------------------------------------------------* REPORT zdummy_rmr60. DATA: BEGIN OF itab_almacen OCCURS 0, r_num TYPE n, END OF itab_almacen. DATA: r_temp LIKE itab_almacen-r_num, r_temp2 LIKE itab_almacen-r_num. DATA: r_cont TYPE n VALUE 1. DATA: r_nomcampo(6) TYPE c. DATA: r_tabix LIKE sy-tabix. FIELD-SYMBOLS <fs_valor> TYPE ANY. SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-t00. PARAMETERS: r_num1 TYPE n, r_num2 TYPE n, r_num3 TYPE n, r_num4 TYPE n, r_num5 TYPE n. SELECTION-SCREEN END OF BLOCK b1. AT USER-COMMAND. CASE sy-ucomm. WHEN '/&PROC'. PERFORM reordenar_numero. PERFORM imprimir. WHEN 'BACK'. LEAVE TO SCREEN 0. ENDCASE. START-OF-SELECTION. SET TITLEBAR 'STANDARD'. SET PF-STATUS 'MENU'. PERFORM llenar_tabla. PERFORM imprimir. END-OF-SELECTION. *&---------------------------------------------------------------------* *& Form llenar_tabla *&---------------------------------------------------------------------* FORM llenar_tabla . DO 5 TIMES. CONCATENATE: 'r_num' r_cont INTO r_nomcampo. ASSIGN (r_nomcampo) TO <fs_valor>. MOVE: <fs_valor> TO itab_almacen-r_num. APPEND itab_almacen. r_cont = r_cont + 1. ENDDO. ENDFORM. " llenar_tabla *&---------------------------------------------------------------------* *& Form reordenar_numero *&---------------------------------------------------------------------* FORM reordenar_numero . LOOP AT itab_almacen. r_temp = itab_almacen-r_num. r_tabix = sy-tabix + 1. READ TABLE itab_almacen INDEX r_tabix. IF r_temp LT itab_almacen-r_num. r_temp2 = itab_almacen-r_num. MOVE: r_temp TO itab_almacen-r_num. MODIFY itab_almacen INDEX r_tabix. r_tabix = sy-tabix - 1. READ TABLE itab_almacen INDEX r_tabix. itab_almacen-r_num = r_temp2. MODIFY itab_almacen. PERFORM reordenar_numero. ENDIF. ENDLOOP. ENDFORM. " reordenar_numero *&---------------------------------------------------------------------* *& Form imprimir *&---------------------------------------------------------------------* FORM imprimir . r_cont = 1. LOOP AT itab_almacen. WRITE: / 'Lugar : ', r_cont, '-->', itab_almacen-r_num. r_cont = r_cont + 1. ENDLOOP. ENDFORM. " imprimir
__________________
01010000 01001010 10011000 10100001 De Byte a Beat. |
#2
|
|||
|
|||
No se si es lo que busques pero yo lo haría así
FORM reordenar_numero . SORT itab_almacen DESCENDING . ENDFORM. " reordenar_numero |
#3
|
||||
|
||||
mmm nop jajaja conozco el sort lo que queria era hacerlo mismo pero usando recursividad es solo un tipo de practica para ejercitar la mente XD . Gracias de todas formas!!!
__________________
01010000 01001010 10011000 10100001 De Byte a Beat. |
#4
|
||||
|
||||
Interesante...
Hola amigo, oye primera vez que veo un post de recursividad aqui. Muchos algoritmos salen mas rapido por ahi...
Con referencia al codigo que colocaste, veo que haces un loop, y dentro del loop haces la llamada recursiva. Un loop es un recorrido iterativo. no deberias mezclar algoritmos iterativos con recursivos. Yo si uso recursividad n o uso while, do, loop, etc... de hecho, la declaracion de variables en las funciones recursivas no se estila (con excepcion de auxiliares). Si quieres te recomiendo SCHEME o PROLOG. que son lenguajes totalmente recursivos. Saludos...
__________________
Atte. Marcos Carrasco... |
Herramientas | Buscar en Tema |
Desplegado | |
|
|