受到这些帖子的启发:stackoverflow帖子1,Stackoverfow帖子2,极客发布
我想用R写一个算法来除法两个整数,给出整数商和余数,而不需要除法或乘法。
然而,我正在努力将代码翻译成R。以下是迄今为止我得到的:
Division_alternative <- function(dividend, divisor) {
# Calculate sign of divisor
if (dividend < 0 | divisor < 0) {
sign <- -1
} else {
sign <- 1
}
# Transform to positive
dividend = abs(dividend)
divisor = abs(divisor)
# Initialize the quotient
quotient = 0
while (dividend >= divisor) {
print(sign*quotient)
dividend - divisor
quotient + 1 }
}
a = 25
b = 4
print(Division_alternative(a, b))
到目前为止,我不确定代码出了什么问题,也不确定它不会返回任何内容。有人知道线索吗?
使用正确的赋值并使我们的函数返回一些东西,我们得到:
Division_alternative <- function(dividend, divisor) {
##Handle only positive cases
stopifnot((dividend > 0 && divisor >0))
quotient = 0
while (dividend >= divisor) {
# print(sign*quotient)
dividend <- dividend - divisor
quotient <- quotient + 1 }
return(list(dividend, quotient))
}
a = 25
b = 4
print(Division_alternative(a, b))
我只处理阳性病例,因为这是最简单的病例。我将让您了解如何在其他3种情况下使其工作的逻辑,因为这是a(做这些事情的乐趣,b(我不是CS专业的学生,从未从头开始实现模数和余数函数。