📜  Rexx-函数

📅  最后修改于: 2020-11-02 04:00:23             🧑  作者: Mango


Rexx中的代码通常分为功能和子例程。使用函数有助于将代码分成更多的逻辑单元。让我们详细看看这些功能。

定义功能

函数声明的语法如下-

FunctionName: 
PARSE ARG arguement1, arguement2… arguementN 
Return value 

哪里,

  • FunctionName-这是分配给函数的名称。

  • PARSE ARG-这些是Rexx中的关键字,用于表示将参数传递给函数。

  • 争论1,争论2…争论N-这些是传递给函数的参数。

  • 返回值-这是由函数返回的值。

以下程序是有关如何在Rexx中使用功能的简单示例。

/* Main program */ 
say add(5,6) 
exit 
add: 
PARSE ARG a,b 
return a + b 

关于上述程序,应注意以下几点:

  • 我们定义了一个名为add的函数,该函数接受2个参数a和b。

  • 该函数使用return语句返回a和b的和。

  • exit语句必须用于表示主程序的结束。

上述程序的输出如下-

11

处理参数

在Rexx中,可以使用某些特定功能来处理参数。让我们看几个这样的论点。

精氨酸

这种方法被用来返回对函数定义的参数的数目。

语法

arg() 

参数-无

返回值-这个方法返回为该函数定义的参数个数。

示例

/* Main program */ 
say add(5,6) 
exit 
add: 
PARSE ARG a,b 

say arg() 
return a + b 

输出-运行上述程序时,将得到以下结果。

2 
11 

arg(索引)

此方法用于返回特定位置的参数值。

语法

arg(index)

参数

  • 索引-要返回的参数的索引位置。

返回值-此方法返回特定位置的参数值。

示例

/* Main program */ 
say add(5,6) 
exit 
add: 
PARSE ARG a,b 

say arg(1) 
return a + b 

输出-运行上述程序时,将得到以下结果。

5 
11 

递归函数

递归函数或例程是调用自身的函数。任何递归函数都可以以传统的非递归方式(或迭代方式)进行编码,但是有时递归提供了更好的问题解决方案。并非所有的编程语言都支持递归。雷克斯做到了。

我们来看一个使用Rexx中的递归函数的著名析因程序的示例。

/* Main program */ 
do n = 1 to 5 
say 'The factorial of' n 'is:' factorial( n ) 
end 
return  

/* Function to get factorial */ 
factorial : procedure 
n = arg(1) 
if n = 1 then 
return 1 
return n * factorial( n - 1 ) 

上面程序的输出如下-

The factorial of 1 is: 1
The factorial of 2 is: 2 
The factorial of 3 is: 6 
The factorial of 3 is: 24 
The factorial of 3 is: 120