我正在寻找一个术语,用于表示不是纯函数且不一定可重入的函数,但是当第二次调用时会创建与第一次调用时相同的状态。
例如,此函数不会通过以下条件:
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