【问题标题】:Number of iterations in two nested while loops when a = n当 a = n 时,两个嵌套 while 循环中的迭代次数
【发布时间】:2021-06-24 15:50:12
【问题描述】:

假设我们有while循环:

    a = 2n
    while(a < 9n^4)
    {
        b = 11n^2
        while(b > 1)
        {
            b = b / 7
        }
        a=2*a
    }

如何找到两个循环的迭代次数?

【问题讨论】:

  • 不知道这个公式是什么,但在循环外声明一个变量,并在最内部循环的每次迭代中将其加一
  • 嗯,我想知道....你知道^是什么意思吗?
  • ^ 在这里表示指数。
  • 不,它没有。这是Java,不是数学。见What does the ^ operator do in Java?。当您想获得迭代次数时,这些细节很重要。
  • 哈哈,好吧,我们假设是这样。我将如何估计每个循环中的迭代?

标签: java loops while-loop


【解决方案1】:

假设外部while(a &lt; 9n^4) 将工作x 次。然后我们有一个方程2n * (2^x) &lt; 9n^4 &lt;==&gt; 2^x &lt; 4.5 n^3 &lt;==&gt; x &lt; log_2 (4.5 n^3)。只要条件不满足,循环就会中断,即一旦x 大于该RHS,循环就会中断。这意味着它会有精确的floor(log_2 (4.5 n^3)) 迭代。

如果您指的是 Java 整数除法,则内部循环(方式)更棘手,或者如果您指的是普通浮点除法,则与外部循环非常相似。

【讨论】:

    【解决方案2】:
    int iterationCount = 0;
    
    a = 2n
    while(a < 9n^4) {
        b = 11n^2
    
        while(b > 1) {
            iterationCount++;
            b = b / 7
        }
        
        a=2*a
    }
    

    【讨论】:

      【解决方案3】:

      所以基本上第一个循环条件是 2n 2^2 * a -> 2^3*a... 所以我们有 2^m * 2n 次计算。 第二个循环是 11n^4 / 7 次计算。

      【讨论】:

        猜你喜欢
        • 2018-05-14
        • 1970-01-01
        • 1970-01-01
        • 2011-06-01
        • 2012-06-05
        • 1970-01-01
        • 2017-07-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多