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
),我真的很想递归地实现这个函数。。。