你怎么称呼一个可以再次调用以重做而不是再次重做的函数?



我正在寻找一个术语,用于表示不是函数且不一定可重入的函数,但是当第二次调用时会创建与第一次调用时相同的状态。

例如,此函数不会通过以下条件:

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,完成开机顺序,然后以某种方式配置硬件。如果以后我需要重新初始化硬件,我可以再次调用此函数。但是,如果该函数还通过附加到已配置结构的数组来设置一些软件结构,那么如果不首先撤消函数最初所做的操作,我就无法再次调用此函数。

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

是否有与这两种类型的函数相关的特定术语(除了通用的优点术语!

这是一个幂等函数。

在富有想象力的名称下阅读更多内容:">什么是幂等操作?

递归函数(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

最新更新