【问题标题】:Convert recursive function to a loop (ternary operator)将递归函数转换为循环(三元运算符)
【发布时间】:2020-11-01 17:16:09
【问题描述】:

所以我从考试题中得到了这段代码,我必须用循环转换递归部分,现在我尝试了很多次,但循环将是无止境的,这里我做了什么:

递归代码

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

【问题讨论】:

标签: c loops recursion function-definition non-recursive


【解决方案1】:

一个非递归函数可以看起来例如以下方式

int f( int n, int m )
{
    if ( m )
    {
        while ( n % m )
        {
            int tmp = m;
            m = n % m;
            n = tmp;
        }
    }

    return m ? m : n;
}

【讨论】:

    猜你喜欢
    • 2013-05-31
    • 2019-05-30
    • 1970-01-01
    • 1970-01-01
    • 2020-08-02
    • 2018-07-13
    • 1970-01-01
    • 2018-03-15
    相关资源
    最近更新 更多