首页 > 解决方案 > 将两个整数相除,给出整数商和余数,而不用在 R 中进行除法或乘法

问题描述

受这些帖子的启发: stackoverflow 帖子 1stackoverflow 帖子 2​​geeksforgeeks 帖子

我想在 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))

到目前为止,我不确定代码有什么问题,它不会返回任何东西。任何人的线索?

标签: ralgorithmdivision

解决方案


使用正确的赋值并让我们的函数返回一些东西,我们得到:

 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 专业的,从来没有从头开始实现模数和余数函数。


推荐阅读