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

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

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

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

有人可以为我简化用法吗?

最佳答案

想象一下您正在编写一个C编译器,该编译器将接受您编写的程序并生成可执行代码。您要测试编译器是否正常工作。您编写了一个测试用例,该用例是函数的递归定义,并断言在运行编译后的代码时,您可以轻松计算出结果(在这种情况下,程序应输出91)。如果您开始编写用于编译递归调用的优化,那么像这样的困难测试案例将特别有用。
想象一下,您正在编写一个试图编写证明的程序,而不是编写编译器,就像在数学类中编写程序一样。程序的输入可能是一组转换,例如您用来编写证明的代数定律,以及该程序试图证明的陈述。计算机科学的这一分支称为形式验证。涉及麦卡锡91函数的陈述很难证明。例如(对于所有x

关于algorithm - McCarthy 91函数在计算机科学中的意义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18192506/

10-10 00:58