【问题标题】:Expressing relationship between two variables in pseudocode?用伪代码表达两个变量之间的关系?
【发布时间】:2020-08-27 20:38:08
【问题描述】:

我想分析一些伪代码:

public static void test(float z) {
  float y = 0;
  for (float i = 1; i <= z; i++) {
    if (y < z) {
      y = 4 * i * i + 6;
    }
  }
  return y;
}

从函数中,我了解到y = 4i^2 + 6 无论何时y &lt; z。但是,我无法捕捉方程中 y 和 z 之间的关系。我觉得它可以被捕获为一个楼层函数(阶跃函数)——对于 z 中的某个数字范围,y 将具有该指定值。

【问题讨论】:

  • 在z = 2 * i * i + 3;中的z不应该是y吗?
  • 是的,应该。谢谢你看到这个

标签: java algorithm function time-complexity runtime


【解决方案1】:

y 对于第一个i 变得大于z(并停止更改),这样2*i^2 + 3 &gt; z。换句话说,最小的i &gt; sqrt((z - 3) / 2),即floor(sqrt((z - 3)/2)) + 1。现在你知道i,计算y。

【讨论】:

  • 感谢您的回答。我认为这有助于清理一些东西或我。但是,当我用诸如 6 或 12 之类的 z 值替换时,我没有分别得到值 11 和 21?这是为什么呢?
  • 可能是i = floor(sqrt((z - 4) / 2)) + 1(当 z >= 4 时)。
  • 我的问题更多是“有没有办法直接根据 z 得到 y,而不必在方程中使用 i”?
猜你喜欢
  • 2021-11-05
  • 2022-11-22
  • 1970-01-01
  • 2016-06-27
  • 2017-07-31
  • 1970-01-01
  • 2019-09-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多