首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >整数除法

整数除法
EN

Stack Overflow用户
提问于 2011-08-29 18:15:12
回答 4查看 5.1K关注 0票数 2

我面临以下面试问题。

考虑以下函数声明:

无效测验(Int i) { if (i > 1) {测验(I/ 2);测验(I/ 2);} writeOutput("*");}

函数quiz(5)打印了多少个星号?

我的回答是:

语言(Javascript,PHP等)与整数除法结果类型为浮点数-7个星号。函数测试被调用:

  1. 和i=5打印一次,用星号打印一次,用i=2.5打印两次,用星号打印两次,用i=1.25打印,用星号打印四次,用星号打印了八次,没有用星号打印

语言(C/C++、C#、Java等)哪个除法结果类型名称是整数-三个星号。函数测试被调用:

一次,星号printed.

  • With i=2 -两次,星号printed.

  • With i=1 -四次,星号未打印。

问题语法类似于C/C++,Java,所以答案是三个

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

那么,我是否遗漏了一些警告,或者我的回答比他们预期的要详细?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-08-29 18:24:59

如果将代码更改为:

代码语言:javascript
复制
void quiz(int i)
{
    if (i > 1)
    {
        quiz(i / 2);
        quiz(i / 2);
    }
    printf("* for %d\n", i);
}

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

代码语言:javascript
复制
* for 1
* for 1
* for 2
* for 1
* for 1
* for 2
* for 5

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

票数 5
EN

Stack Overflow用户

发布于 2011-08-29 18:19:39

当我也调用writeOutput 1时,<=也会被调用。

票数 5
EN

Stack Overflow用户

发布于 2011-08-29 18:23:03

如果函数以int作为参数,它(在通常情况下)将不会将2.5作为参数。当然,除非有人说#define double int,但在这种情况下,没有什么是可靠的。

所以你的答案应该是你答案的第二部分。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7234057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档