我们很难在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)){时的错误:长度为零
答案 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)