用这种新的编程语言实现除法

时间:2012-08-21 16:19:14

标签: function puzzle

X是一种新的编程语言,只允许以下操作 -

  1. 您可以为变量指定零(如在a = 0中)
  2. 您可以将一个变量分配给另一个变量(a = b)
  3. 您可以进行后增量操作(a ++)
  4. 该语言中不存在负数。所以负数被视为0。
  5. loop(10){// code}将执行十次代码。
  6. 您无法使用比较运算符或条件运算符或按位运算符。
  7. 编写一个函数来实现这种语言的除法。

    到目前为止我的解决方案 -

    由于除法是重复减法,我将首先实现减法。

    function decrement(var a)
    {
        var x;
        loop(a)
        {
            x = a++;
         }
         return x;
    }
    
    function subtract( var a, var b )
    {
        //returns a-b
         var x;
         loop(b)
         {
             x=decrement(a);
         }
         return x;
    }
    

    现在,如何使用此减法实现除法函数?

    或者不使用此减法的任何其他解决方案也没问题。

1 个答案:

答案 0 :(得分:2)

// Your function (corrected)
function decrement(var a)
{
    var x = 0;
    loop(a) 
    {
        x++; a++;
    }
    return x;
}

// Your function
function subtract(var a, var b)
{
    var x;
    loop(b)
    {
        x = decrement(a);
    }
    return x;
}

// This function returns the correct value if a is divisible by b. Otherwise it returns truncate(a/b) + 1
function divide(var a, var b)
{
    var c;

    c = 0;
    loop(a)
    {
        a = subtract(a, b);
        c++;
    }
}