r - 两个整数相除,给出整数商和余数,R中不用除法或乘法

标签 r algorithm division

受到这些帖子的启发: 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))

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

最佳答案

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

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

关于r - 两个整数相除,给出整数商和余数,R中不用除法或乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53327315/

相关文章:

r - 如何从R中的日期中提取月份

r - 如何在 geom_smooth 中使用方法 ="nlsLM"(在 minpack.lm 包中)

c++ - 具有多个级别的进度条

algorithm - PageRank 算法如何处理链接?

c++ - 如何保持最相关项目的大型优先级队列?

c - 逆除法和乘积的准确性

c++ - 我的代码在加法和除法时忽略小 float

r - 在 Ubuntu 20.04 上安装 R

r - 使用 R 创建起点-终点矩阵

python - pandas 在不同大小的 2 个表(1 个聚合表)之间执行划分