java - 以下算法将显示多少颗星?

标签 java algorithm big-o trace

给定以下代码,以下算法将显示多少颗星(平均)?通过跟踪前几次迭代,我确定它是 99,但其他人告诉我它应该是 100。为什么它应该是 100,而不是 99?当 nNum 等于 1 到 9 范围内的数字时,我们确实为每个生成的相应随机数打印了大约 10 颗星(从 1 到 9 的随机数中有 9 颗星,而生成的 0 中有 1 颗星作为导致 nNum-- 的前一个 nNum 的随机数)。但是当 nNum = 10 时,我们没有从“前一个”nNum 中产生随机数 0 的那一颗额外的星。(我希望我在这里说的是有道理的......!)

public static void main(String[] args)
{
  int nNum = 10;
  printStar(nNum);
}

public static void printStar(int nNum)
{
  if(randNumGen.nextInt(10)<1)
    nNum--;
  if(nNum>0)
  {
    System.out.print('*');
    printStar(nNum);
  }
}

最佳答案

您正在根据随机数减少变量值

if(randNumGen.nextInt(10)<1)
    nNum--;

基于此,您将打印至少 9 颗星(假设随机生成的总是 0)。而且,另一方面,您可能拥有无限颗星星(尽管从概率上讲,由于 PRNG 种子,这不会发生)

关于java - 以下算法将显示多少颗星?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58329720/

相关文章:

exception - 与其他库一起创建库 jar

java - 如何使 org.apache.cxf.interceptor.LoggingInInterceptor 登录自定义日志文件

java - 我可以在 Junit 测试中运行 PMD 分析吗?

algorithm - 如何通过结构光中的相移获得亚像素精度?

big-o - 与 log(n) 相比,log(n^2) 的大 O 是多少?

java - 指南:范围相关问题

python-3.x - 构造无补的幂集

c - C 语言的单调时钟

scheme - 查找调用许多过程的过程的增长顺序

algorithm - 学习我的最终 : Asymptotic notation