R 递归计算`log(log(log(134)))`
我想递归地计算函数中的日志周期R 递归计算`log(log(log(134)))`,r,R,我想递归地计算函数中的日志周期 logCounter <- function(number) { k <- 0 if(k>=0){ k = k+1 } result <- log(number) if (result > 1) { logCounter(result) } else { return(k) } } logCounter(123)#returns
logCounter <- function(number) {
k <- 0
if(k>=0){
k = k+1
}
result <- log(number)
if (result > 1) {
logCounter(result)
} else {
return(k)
}
}
logCounter(123)#returns 3 because log(log(log(123))) < 1
logCounter您可以更轻松地执行此操作,而无需使用while
循环递归调用函数:
logCounter <- function(number) {
k <- 0
result <- number
while(result>1){
k <- k + 1
result <- log(result)
}
return(k)
}
> logCounter(123)
[1] 3
无需使用while
循环递归调用函数,您可以更轻松地执行此操作:
logCounter <- function(number) {
k <- 0
result <- number
while(result>1){
k <- k + 1
result <- log(result)
}
return(k)
}
> logCounter(123)
[1] 3
您不需要使用调用。试试这个:
logCounter <- function(number) {
if (number <1) return(0) # A minor edit.
result <- log(number)
if (result > 1) return(logCounter(result)+1)
return(1)
}
logCounter您不需要使用Recall
。试试这个:
logCounter <- function(number) {
if (number <1) return(0) # A minor edit.
result <- log(number)
if (result > 1) return(logCounter(result)+1)
return(1)
}
logCounter你就快到了。首先,查看result
行之前的内容。该代码将导致每次调用函数时k
为1
。您将k
设置为0,然后检查它是否等于零(它是零),然后将它增加1,得到k=1。记住,每次调用时都会创建一个新值k
,您不会在调用之间存储它们。这就是为什么当你返回k时,你总是会得到1
@nograps-Thx作为你的答案!然而,我真的不知道把k
放在哪里,所以它只被调用一次……诀窍是在每次返回时添加一些东西,你根本不需要k
。这是一个很大的暗示。你肯定应该复习一些递归的例子。@nograps-Thx为你的答案!我也尝试过只使用k++
,但在R
中不起作用。我的问题是在哪里定义k=0
一次,这样我就可以使用该值,并在每个周期中添加它……您就快到了。首先,查看result
行之前的内容。该代码将导致每次调用函数时k
为1
。您将k
设置为0,然后检查它是否等于零(它是零),然后将它增加1,得到k=1。记住,每次调用时都会创建一个新值k
,您不会在调用之间存储它们。这就是为什么当你返回k时,你总是会得到1
@nograps-Thx作为你的答案!然而,我真的不知道把k
放在哪里,所以它只被调用一次……诀窍是在每次返回时添加一些东西,你根本不需要k
。这是一个很大的暗示。你肯定应该复习一些递归的例子。@nograps-Thx为你的答案!我也尝试过只使用k++
,但在R
中不起作用。我的问题是在哪里定义k=0
一次,这样我就可以使用该值并在每个周期添加它…@Thomas@nograps Thx用于您的实现。事实上,这不是家庭作业,而是一本书中的问题(我想学习R
),我真的很想递归地实现函数…@Thomas@nograps-Thx供您实现。事实上,这不是家庭作业,而是一本书中的问题(我想学习R
),我真的很想递归地实现这个函数。。。