首页 > 解决方案 > 用伪代码表达两个变量之间的关系?

问题描述

我有一些要分析的伪代码:

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 < z. 但是,我无法捕捉方程中 y 和 z 之间的关系。我觉得它可以被捕获为一个地板函数(阶跃函数)——对于 z 中的某个数字范围,y 将具有该指定值。

标签: javaalgorithmfunctiontime-complexityruntime

解决方案


y变得大于z(并停止改变)第一个i使得2*i^2 + 3 > z. 换句话说,一个极小i > sqrt((z - 3) / 2)值,即floor(sqrt((z - 3)/2)) + 1。现在如您所知i,计算y


推荐阅读