gpt4 book ai didi

pseudocode - 整数除法

转载 作者:行者123 更新时间:2023-12-01 16:04:39 29 4
gpt4 key购买 nike

我遇到了以下面试问题。

Consider this function declaration:

void quiz(int i)
{
if (i > 1)
{
quiz(i / 2);
quiz(i / 2);
}
writeOutput("*");
}

How many asterisks are printed by the function call quiz(5)?

我的回答是:

Languages (Javascript, PHP, etc.) with integer division result type is float - seven asterisks. Function quiz get called:

  1. With i=5 – once, asterisk printed.
  2. With i=2.5 – twice, asterisks printed.
  3. With i=1.25 – four times, asterisks printed.
  4. With i=0.625 – eight times, no asterisks printed

Languages (C/C++, C#, Java, etc.) which division result type name is integer - three asterisks. Function quiz get called:

  1. With i=5 – once, asterisk printed.
  2. With i=2 – twice, asterisks printed.
  3. With i=1 – four times, asterisks not printed.

Question syntax is like C/C++, Java, so the answer would be three

面试是闭卷考试 - 在面试期间我无法运行这段代码并检查它。面试官告诉我,我的回答不是绝对正确的(或者至少,他们没想到会是这样)。然而,我已经在家里运行了这段代码(使用 PHP、Javascript 和 C#),结果与我描述的一样。

那么,是不是我遗漏了一些注意事项,或者我的回答只是比他们预期的更详细?

最佳答案

如果您将代码更改为:

void quiz(int i)
{
if (i > 1)
{
quiz(i / 2);
quiz(i / 2);
}
printf("* for %d\n", i);
}

您会看到 quiz(5) 的结果是:

* for 1
* for 1
* for 2
* for 1
* for 1
* for 2
* for 5

因此,您得到了每个 i 的正确调用次数,您只是没有注意到 writeOutput 在 if 之外,而不是在其中。

关于pseudocode - 整数除法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7234057/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com