除以两个整数,给出整数商和余数,不需要在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

受这些帖子的启发: ,

我想用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种情况下找到如何使其工作的逻辑,因为这是做这些事情的乐趣,我不是CS专业的学生,从未从头开始实现模和余数函数

你没有在你的生命周期中做任何作业,你到底希望它返回什么?虽然循环不返回任何内容,而且在返回调用之后也没有任何值可供实际返回。这几乎是正确的,除了一个错误:符号派生与问题中使用的一样错误。您需要xor而不是简单的or。另外,请对您为使代码正常工作所做的更改进行解释。@Paul,我刚刚修复了语法错误。请对您对代码所做的更改进行解释。与在任何参数为负时终止函数相比,使用简单的xor来确定符号将是一个重大改进。@Paul,你能告诉我xor是如何工作的吗?我可能遗漏了一些东西,但仅仅更改符号不足以得到正确的答案。如果xOrDividEnd<0,除数<0{符号是-1…应该可以做到。我已经编写了我自己的完整版本,可以找到。请随意将任何您认为有用的内容包含到您的答案中。