在学习递归时,我遇到了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/