如何克隆两个函数,而无需比较它们的输出和签名


int factorial ( int n )
{
   if ( n == 0)
      return 1;
  else
      return n * factorial (n -1);
}

上述功能和以下功能执行相同的功能。句法上不同的代码片段,该片段实现了相同的功能,称为Type-4代码克隆。它们也被称为语义或功能性克隆

 int factorial ( int n )
{
   int i , fact =1;
   for ( i =1; i <= n; i ++)
       fact = fact * i ;
   return fact;
}

现在,我的问题是如何确定这两个功能是克隆而不比较它们的输出和签名的?

您根本无法做到。

假设第一个方法在特定输入上停止。

为了找到遵循您定义的"克隆",必须找到程序的其他任何部分都停止了任何输入。

换句话说,您必须解决停止问题。正如您希望知道的那样,无法解决。

相关内容

  • 没有找到相关文章

最新更新