c - 分区程序

扫码查看

我一直在尝试用整数做一个简单的除法。使用一系列减法,并尝试使用递归。试想一下,使用只能使用加法和减法的计算机。我已经创建了一个乘法和一个指数,但是我在除法方面遇到了最困难的时期。任何帮助或建议将大有帮助!

#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是分母。我正在使用GNUC。

最佳答案

你要:

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

09-30 16:04
查看更多