将递归函数转换为循环(三元运算符)
Convert recursive function to a loop (ternary operator)
所以我有这个考试题的代码,我必须用循环转换递归部分,现在我试了很多次,但循环将是无休止的,我是这样做的:
递归代码
int f(int n, int m)
{
int k;
if (m == 0) return n;
k = n % m;
return k==0 ? m : f(m,k);
}
带循环的代码
int ff(int n, int m)
{
int k;
if (m == 0) return n;
k = n % m;
if (k == 0 ) return m;
else {
for(int i = 0 ; k != 0; i++ )
{
int h;
h = k % m;
if( h == 0 ) return k;
}
}
return m;
}
非递归函数可以通过以下方式查找示例
int f( int n, int m )
{
if ( m )
{
while ( n % m )
{
int tmp = m;
m = n % m;
n = tmp;
}
}
return m ? m : n;
}
所以我有这个考试题的代码,我必须用循环转换递归部分,现在我试了很多次,但循环将是无休止的,我是这样做的:
递归代码
int f(int n, int m)
{
int k;
if (m == 0) return n;
k = n % m;
return k==0 ? m : f(m,k);
}
带循环的代码
int ff(int n, int m)
{
int k;
if (m == 0) return n;
k = n % m;
if (k == 0 ) return m;
else {
for(int i = 0 ; k != 0; i++ )
{
int h;
h = k % m;
if( h == 0 ) return k;
}
}
return m;
}
非递归函数可以通过以下方式查找示例
int f( int n, int m )
{
if ( m )
{
while ( n % m )
{
int tmp = m;
m = n % m;
n = tmp;
}
}
return m ? m : n;
}