: stackoverflow post 1,stackoverflow post 2,geeksforgeeks post
我想在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))
我不确定到目前为止代码有什么问题,它不会返回任何东西。有任何线索吗?
答案 0 :(得分:1)
使用适当的赋值并使我们的函数返回某些内容,我们得到:
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专业的学生,并且从未从头实现过模和余数函数。