我试图找出概率在哪里达到某个点;则函数将返回负责该概率的值。
我写的函数有两个参数p代表CPU的数量q代表每个CPU处理的作业数量
该函数希望优化服务器中的CPU数量,以保证每个CPU同时处理一个作业的概率为0.9,因此,处理器数量(p)需要大于作业数量(q)。
opcpu <- function(p,q){
if (p < q){
paste("The number of processors should be",q," or more")
} else {
prob = prod(p:(p-(q-1)))/p^q
while (prob < 0.9){
p = p + 1
opcpu(p,q)
}
return(p)
}
}
我把这个函数写成了递归函数,但是好像有什么地方不对。
我试着运行这个函数,但它不起作用。用试错法解决这个问题,当q = 12时,p = 631。
1条答案
按热度按时间velaa5lx1#
您的思路是正确的。请尝试使用
if
而不是while
,并返回p
或递归调用:或者你可以用
while
代替递归:注意,我将
paste()
改为stop()
,因为看起来您试图指出p < q
不是有效的输入。另一个选择是,如果输入丢失或小于q
,则从p = q
开始测试: