Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 将递归函数转换为循环(三元运算符)_C_Loops_Recursion_Function Definition_Non Recursive - Fatal编程技术网

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

C 将递归函数转换为循环(三元运算符),c,loops,recursion,function-definition,non-recursive,C,Loops,Recursion,Function Definition,Non Recursive,所以我有一个考试题的代码,我必须用循环转换递归部分,现在我尝试了很多次,但是循环将是无止境的,下面是我所做的: 递归代码 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;

所以我有一个考试题的代码,我必须用循环转换递归部分,现在我尝试了很多次,但是循环将是无止境的,下面是我所做的:

递归代码

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;
}
请做一些循环。(提示:何时何地修改
k
m
?)