递归函数 - 在编写此函数时需要一些帮助

时间:2014-11-21 17:07:34

标签: c

编写递归函数 int mod_rec(int a,int b) 取a和b参数,返回除以b的余数。

不允许在此函数中使用除法运算符(/),模数运算符(%)和循环。例如,函数调用mod_rec(7,3)和mod_rec(3,5)应分别为1和3。

1 个答案:

答案 0 :(得分:0)

对于无符号整数,函数看起来像

unsigned int mod_rec( unsigned int a, unsigned int b )
{
    if ( a == 0 ) return 0;
    else return a >= b ? mod_rec( a - b, b ) : a;
}  

考虑到当右操作数为零时,操作%是umdefined。不过你可以添加检查b是否等于0,在这种情况下返回0.例如

unsigned int mod_rec( unsigned int a, unsigned int b )
{
    if ( a == 0 || b == 0 ) return 0;
    else return a >= b ? mod_rec( a - b, b ) : a;
}  

编辑:似乎正确的函数定义看起来像:)

unsigned int mod_rec( unsigned int a, unsigned int b )
{
    if ( b == 0 ) return 0;
    else return a >= b ? mod_rec( a - b, b ) : a;
}