子程序调用的参数"n-1"给出了语法错误

0 recursion abap towers-of-hanoi

我想在ABAP编写一个河内塔解算器.

这是我目前的代码:

FORM SOLVE USING s1 TYPE c
             s2 TYPE c
             s3 TYPE c
             n  TYPE i.

  IF n = 1.

    "move disc from tower X to tower Y"
    WRITE:/ text-001, text-002, s1, text-003, text-002, s3.

  ELSE.

    PERFORM solve USING s1 s3 s2 n-1. "Here's my problem, n-1 doesn't work"

    PERFORM solve USING s1 s2 s3 1.

    PERFORM solve USING s2 s1 s3 n-1.

  ENDIF.

ENDFORM. 
Run Code Online (Sandbox Code Playgroud)

我的问题:

如果我选择了USING类似的参数n-1,SAP会将其识别为(不存在的)结构并向我抛出错误.

有没有办法实现这一目标?

非常感谢.

mky*_*oft 5

您需要在运营商之间添加空间.所以你需要输入为n - 1.另一方面,旧版本ABAP不支持内联操作数作为函数/执行参数.如果出现错误,首先将结果分配给新变量,然后将其作为参数传递.

  • 除此之外,"n-1"被解释为"结构***上的*1*字段".当mkysoft回答时,添加空格会将此更改为减法操作. (2认同)