具有 3 个变量的 R 编程中的对数代码

Logarithmic code in R programming with 3 variables

我编写了一个开发对数代码的小程序,我使用了 3 个变量,xyp,其中 x 是基数,y 是对数值,p 是默认值('x' 的幂)。现在我执行它时没有收到错误,但它没有在终端上显示任何答案。有人提供解决方案时会很方便。

algo1 <- function(x, y) {
  p <- 1
if (x ^ p == y) {
  print(p)
} else {
  p <- p + 1
}

algo1(3, 81)

首先,您的代码存在问题,您没有关闭函数(即您缺少最后的 })并且您混合了 <-= 作业(坚持一个):

algo1 <- function(x, y) {
  p <- 1
  if (x ^ p == y) {
    print(p)
  } else {
    p <- p + 1
  }
}

解决这个问题后,您没有得到 returned 值,因为您没有 return()ing 任何东西。要return,只需将变量放在代码中:

algo1 <- function(x, y) {
  p <- 1
  if (x ^ p == y) {
    p
  } else {
    p <- p + 1
    p
  }
}

函数现在returns:

algo1(3, 81)
# [1] 2

我在这里看到了一些问题。

  1. 在函数内部赋值p,虽然看起来函数必须是递归的。

  2. 或者,考虑到出于某种原因你想在 else 条件下递增 p 并且仍然不对递增的值做任何事情,这里不返回任何东西。

如果可以的话,我会将函数更改为:

algo1 <- function(x,y,p = 1) {
  if (x ^ p == y) {
    print(p)
  } else {
    p = p + 1
    algo1(x,y,p)
  }
}

其中 returns p 的值 x^p ==y

> algo1(3,81)
[1] 4

或者,您也可以使用:

round(y ^ (1.0/x))

p.s。可能包括 x^p > y?

的检查和退出条件