分区常规

时间:2016-04-11 00:45:59

标签: c recursion gnu division

我一直试图用整数进行简单的除法。使用一系列减法并尝试使用递归。想象一下,使用只能使用加法和减法的计算机。我已经创建了一个乘法和一个指数,但我在分裂时遇到了最困难的时间。任何帮助或建议都会有很长的路要走!

#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.

1 个答案:

答案 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;
}