您如何称呼可以再次调用而不是再次执行的函数?

时间:2018-10-01 00:53:16

标签: computer-science terminology

我正在为不是 pure 且不一定是 reentrant 的函数寻找一个术语,但是第二次调用时会创建与调用它们时相同的状态第一次。

例如,此函数将不符合条件:

void CounterExample(int value)
{
  static int STORE[5];
  static int STORE_COUNT=0;

  STORE[STORE_COUNT++] = value;
}

这会:

void Example(int value)
{
  static int STORE[5];
  static int STORE_COUNT=0;

  STORE_COUNT = 0;
  STORE[STORE_COUNT++] = value;
}

我特别在考虑硬件初始化功能。通常,他们会以某些方式设置GPIO,执行上电顺序,然后以某种方式配置硬件。如果以后需要重新初始化硬件,则可以再次调用此函数。但是,如果该功能还通过附加到一组已配置的结构来建立一些软件结构,那么我必须首先撤消该功能的工作才能再次调用该功能。

例如,一个comms驱动程序初始化函数可能会打开comms驱动程序,发送一些配置命令,然后调用另一个名为AddCommsCallback()的函数,该函数为comms设备接收的数据注册默认回调。如果我想重置comms驱动程序,则不能简单地再次调用此函数,因为默认回调将添加到现有的过时回调中。

是否有与这两种类型的功能相关的特定术语(功绩通用术语除外!)?

2 个答案:

答案 0 :(得分:0)

这是一个幂等功能。

以富有想象力的名称阅读更多信息:What is an idempotent operation?

答案 1 :(得分:-2)

递归函数(DEF)是一个可以自行调用或处于潜在函数调用循环中的函数。正如定义所指定的,递归函数有两种类型。考虑一个调用自身的函数:我们称这种类型的递归为立即递归。

来源:https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=2ahUKEwjZ8tLFhOTdAhWBecAKHYL7BA4QFjABegQIBhAE&url=http%3A%2F%2Fpages.cs.wisc.edu%2F~calvin%2Fcs110%2FRECURSION.html&usg=AOvVaw09CvF8i5I7WunwACK0w1yx