将递归函数转换为循环(三元运算符)

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;
}