除以两个整数,给出整数商和余数,不需要在R中除法或相乘
受这些帖子的启发: , 我想用R写一个算法来除掉两个整数,给出整数商和余数,而不需要除法或乘法 然而,我正在努力将代码翻译成R。以下是我迄今为止得到的:除以两个整数,给出整数商和余数,不需要在R中除法或相乘,r,algorithm,division,R,Algorithm,Division,受这些帖子的启发: , 我想用R写一个算法来除掉两个整数,给出整数商和余数,而不需要除法或乘法 然而,我正在努力将代码翻译成R。以下是我迄今为止得到的: Division_alternative <- function(dividend, divisor) { # Calculate sign of divisor if (dividend < 0 | divisor < 0) { sign <- -1 } else
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种情况下找到如何使其工作的逻辑,因为这是做这些事情的乐趣,我不是CS专业的学生,从未从头开始实现模和余数函数 你没有在你的生命周期中做任何作业,你到底希望它返回什么?虽然循环不返回任何内容,而且在返回调用之后也没有任何值可供实际返回。这几乎是正确的,除了一个错误:符号派生与问题中使用的一样错误。您需要xor而不是简单的or。另外,请对您为使代码正常工作所做的更改进行解释。@Paul,我刚刚修复了语法错误。请对您对代码所做的更改进行解释。与在任何参数为负时终止函数相比,使用简单的xor来确定符号将是一个重大改进。@Paul,你能告诉我xor是如何工作的吗?我可能遗漏了一些东西,但仅仅更改符号不足以得到正确的答案。如果xOrDividEnd<0,除数<0{符号是-1…应该可以做到。我已经编写了我自己的完整版本,可以找到。请随意将任何您认为有用的内容包含到您的答案中。