use*_*475 7 algorithm math logic
我们只允许使用以下操作:
incr(x) - 调用此函数后,它会将x + 1分配给x
assign(x, y) - 此函数将y的值赋给x(x = y)
zero(x) - 此函数将0分配给x(x = 0)
loop X { } - 括号内的操作将执行X次
我该如何实施除法运算?
虽然 Sarid 的答案是正确的,但可以floor(x / y)更有效地计算如下:
divide(x, y) {
x = incr(x)
z = 0
loop x {
x = sub(x, y)
l = isTrue(x)
z = add(z, l)
}
return z
}
Run Code Online (Sandbox Code Playgroud)
和函数之前已在这里定义add:sub
该isTrue函数定义如下:
isTrue(x) {
y = false
loop x { y = true }
return y
}
Run Code Online (Sandbox Code Playgroud)
请注意,我们之前定义了true和 ,false如下所示:
false = 0
true = incr(false)
Run Code Online (Sandbox Code Playgroud)
这个函数的唯一问题是divide(n, 0)返回n + 1而不是错误。