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
?)