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;
}
现在,我的问题是如何确定这两个功能是克隆而不比较它们的输出和签名的?
您根本无法做到。
假设第一个方法在特定输入上停止。
为了找到遵循您定义的"克隆",必须找到程序的其他任何部分都停止了任何输入。
换句话说,您必须解决停止问题。正如您希望知道的那样,无法解决。