Algorithm 麦卡锡函数在计算机科学中的意义

Algorithm 麦卡锡函数在计算机科学中的意义,algorithm,Algorithm,在学习递归时,我遇到了McCarthy 91函数,它为所有整数参数n 101返回值91 我只是想知道它在计算机科学中的意义是什么?文章说它被用作正式验证的测试用例。这是什么意思 有人能帮我简化一下它的用法吗?想象一下,您正在编写一个C编译器,它接受您编写的程序并生成可执行代码。您希望测试编译器是否正常工作。您创建了一个测试用例,它是编写时函数的递归定义,并断言当您运行编译后的代码时,您会得到易于计算的结果(在这种情况下,程序应该输出91)。如果您开始编写用于编译递归调用的优化,那么像这样困难的测

在学习递归时,我遇到了McCarthy 91函数,它为所有整数参数n 101返回值91

我只是想知道它在计算机科学中的意义是什么?文章说它被用作正式验证的测试用例。这是什么意思


有人能帮我简化一下它的用法吗?

想象一下,您正在编写一个C编译器,它接受您编写的程序并生成可执行代码。您希望测试编译器是否正常工作。您创建了一个测试用例,它是编写时函数的递归定义,并断言当您运行编译后的代码时,您会得到易于计算的结果(在这种情况下,程序应该输出91)。如果您开始编写用于编译递归调用的优化,那么像这样困难的测试用例将特别有用


想象一下,你不是在写编译器,而是在写一个程序,试图写一个证明,就像你在数学课上写的那样。程序的输入可能是一组转换,如用于编写证明的代数定律,以及程序试图证明的语句。计算机科学的这一分支称为形式验证。涉及麦卡锡91函数的陈述很难证明。例如(对于所有的x,你可能会有更好的运气,因为它非常清楚地表明此函数用于形式验证。你的问题更多的是什么是形式验证,而不是此特定函数的意图。请注意,自动化验证程序近年来有了很大进步。例如,在Dafny中,McCarthy函数==91的证明100以下和100以上的标识是完全自动的。请参阅
 int McCarthy(int n)
 {
   if (n > 100)
     return n - 10;
   return McCarthy(McCarthy(n+11));
 }

int main()
{
  printf(" %d ", McCarthy(45));
  return 0;
}