在基数3中为基数10提供任意数字n的算法

时间:2018-03-09 17:41:27

标签: r algorithm base

我需要编写一个算法,在R中给出3个基数为3的数字。到目前为止,我写道:

vector <- c(10, 100, 1000, 10000)

ternary <- function(n) { while (n != 0) {

  {q<- n%/%3}

  {r <- n%%3}

  {return(r)}

  q<- n  } 

sapply(vector, ternary)}

我认为通过应用sapply(vector,trinary),它会给我所有给定n的所有r,我将放入三元组(n)。我的代码仍然给了我&#34;最后的r&#34;而且我不明白为什么。

2 个答案:

答案 0 :(得分:2)

这是我在n年级手工学习的简单实现(不记得确切的时间)。

base3 <- function(x){
    y <- integer(0)
    while(x >= 3){
        r <- x %% 3
        x <- x %/% 3
        y <- c(r, y)
    }
    y <- c(x, y)
    y
}

base3(10)
#[1] 1 0 1

base3(5)
#[1] 1 2

答案 1 :(得分:2)

您可以使用recursion

base3 =function(x,y=NULL){
  d = x %/% 3
  r=c(x %% 3,y)
  if(d>=3) base3(d,r)
  else c(d,r)
}
 base3(10)
[1] 1 0 1
> base3(100)
[1] 1 0 2 0 1