创建R函数问题

时间:2020-05-26 14:43:51

标签: r function

我们很难在R程序中编写函数,我们的问题是: “如果我们拥有的数字是奇数,那么我们乘以3并增加1。如果我们的数字是偶数,那么我们除以2。

示例

如果我们的电话号码是7,

7 * 3 + 1 = 22

22/2 = 11

11 * 3 + 1 = 34

34/2 = 17

....

以便使该系列继续进行”“您能帮我们吗?

f=function(x) { 
  if(which(x%%2==0)) { 
    x=x/2 
    print(x) 
  } else { 
    if(which(x%%2==1)) { 
      x=3*x+1  
      print(x) 
    } 
  } 
} 

> f(2) 
[1] 1 

> f(4) 
[1] 2 

> f(3) 

if(that(x %% 2 == 0)){时的错误:长度为零

1 个答案:

答案 0 :(得分:0)

您可以大大简化此代码。我认为其他人已经提到“哪个”在这里不正确。但是还要看一个事实,即如果某事物不是偶数(被二整除),那么它一定是奇数。这意味着该决策是二分法的(即0或1)。因此,您可以将代码简化为以下内容。注意,我们也将打印移至if语句之后,因为我们必须始终打印结果。无需复制代码。至于系列,您将需要使用循环。您可以考虑运行一个递归循环,但是请记住,这是一个永无止境的函数,除非您想尝试看到无穷大,否则应该停止它。

f=function(x) { 
  if(x%%2==0) { 
    x=x/2 
  } else { 
      x=3*x+1  
  } 
  return (x) # Ben Bolker made a good point that you will need to return X

} 

f(1)
f(2)
f(7)