我一直试图用整数进行简单的除法。使用一系列减法并尝试使用递归。想象一下,使用只能使用加法和减法的计算机。我已经创建了一个乘法和一个指数,但我在分裂时遇到了最困难的时间。任何帮助或建议都会有很长的路要走!
#include<stdio.h>
int DIV(int m, int n){
if(m == 0){
return 0;
}
else if(n == 0){
return -1;
}
else if( n == 1){
return m;
}
else if(m > 0 && n > 0)
return DIV(m, n-1) - m;
} //exit
到目前为止,这是我的代码,只需要在结束语句中提供帮助。另外int m
是分子,n
是分母。我顺便使用GNU C.
答案 0 :(得分:1)
你想:
else if (m < n)
return 0;
else
return 1 + DIV (m-n, n);
但是,如果您希望此代码实际在资源有限的计算机上运行,则应将其实现为while循环。也许(错误检查和负数处理省略):
int div (int num, int den)
{
int ret = 0;
while (num > den)
{
num -= den;
ret++;
}
return ret;
}