麦卡锡91在计算机科学中的作用

时间:2013-08-12 16:53:39

标签: algorithm

在学习递归的过程中,我遇到了McCarthy 91函数,该函数返回所有整数自变量n <= 101的值91,并且n> 10的n - 10。 101。

 int McCarthy(int n)
 {
   if (n > 100)
     return n - 10;
   return McCarthy(McCarthy(n+11));
 }

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

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

有人可以为我简化其使用吗?

1 个答案:

答案 0 :(得分:7)

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

图像不是编写编译器,而是编写一个试图编写证明的程序,就像在数学类中编写一样。程序的输入可能是一组转换,如用于编写证明的代数法则,以及程序试图证明的语句。计算机科学的这个分支称为形式验证。涉及McCarthy 91功能的陈述很难证明。例如(对于所有x <= 100,M(x)== 91)将非常难以证明。对于您的校对编写程序和转换来说,这将是一个非常难以解决的问题。