之前面试时遇到的一个有些奇怪的问题

2021-10-08 16:11:32 +08:00
 KomiSans

1000/1+1000/2+1000/3+...+1000/n=10000 求 n 是多少(面试的 nodeJS) 我因为理解能力比较差所以先写了一下具体的实现方法 如图:

仅仅觉得有些奇怪 自己的写法也很奇怪

4159 次点击
所在节点    程序员
31 条回复
BiChengfei
2021-10-08 19:16:00 +08:00
如果不局限于 JS,也可能考察数据类型吧
整形 / 整形,得到的是整形,永远不可能等于 10000

算法解是很牛,如果是普通职位,面试官都不一定知道,或许只是想考验你数据类型、临界值处理、需求沟通、需求判断能力
SoloCompany
2021-10-08 20:42:57 +08:00
@jorneyr C 取 0.5772 的精度不够, Math.exp(10 - 0.5772) = 12367.161838810916 得到的结果大了 1, 要再多两位的精确度 0.577215 才能得到正确的结果 12366.976332774619

默认题目要求应该是精确值而不是约数, 那么迭代应该是最优解
nicehyj
2021-10-08 20:50:25 +08:00
这玩意有点像斐波那契数列
qinwangzeng
2021-10-08 21:57:43 +08:00
感觉你们想太复杂了?
'''go
func Test2110082149(t *testing.T) {
sum := 0
for n := 1; n < math.MaxInt64; n++ {
sum += 1000 / n
if sum == 10000 {
fmt.Println(n)
return
}
}
}
'''
跑了 10 秒没跑出结果,此题无解
qinwangzeng
2021-10-08 22:06:08 +08:00
按题目意思,n 是整数
liuidetmks
2021-10-09 05:27:22 +08:00
刚百度了下,除了 n=1 时以外,没有任何一个调和数是整数

这什么岗位?
whosesmile
2021-10-09 11:14:58 +08:00
n=1 啊,这还写什么程序?
换个思路,左右等式全部用 1 除,然后你就发现了,只能是 1 了啊
MissThee
2021-10-09 11:38:07 +08:00
@whosesmile n=1 等式不就成 1000/1=10000 了。。。
whosesmile
2021-10-09 14:35:20 +08:00
@MissThee 给我问懵逼了,任何数除以 1 等于它本身,这不对吗?
Frankcox
2021-10-09 15:00:04 +08:00
@whosesmile 左边是 1000,右边是 10000,,,,,,
whosesmile
2021-10-11 10:23:27 +08:00
@Frankcox @MissThee 尴尬,惭愧惭愧, 看错了...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/806454

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX