编写递归函数 int mod_rec(int a,int b) 取a和b参数,返回除以b的余数。
不允许在此函数中使用除法运算符(/),模数运算符(%)和循环。例如,函数调用mod_rec(7,3)和mod_rec(3,5)应分别为1和3。
答案 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;
}