2

我需要一种算法来计算基于数组长度的偏移量。我已经手动获取了每个号码的号码,但如果可能的话,无需进行案例/切换。

给定一个数组长度x,我需要想出一些计算这个的东西:

20 if x == 5
25 if x == 4
35 if x == 3
50 if x == 2

我错过了什么吗?我必须在这里使用开关吗?

4

2 回答 2

6

一个随机的猜测,但是105 div x呢?

或者也许round(20 / x) * 5

实际上,由于您只给出了四种情况,因此您可以使用很多不同的方法。但也许更重要的是 - 您是否可以遵循任何模式来使您的代码更有意义?

于 2013-07-18T04:24:44.440 回答
3

首先让我们明确您的映射函数不是线性的,因为对于(线性)x,您的函数结果之间的间隔不同。

要找到非线性函数,您需要应用一些“更困难”的函数插值(例如拉格朗日)。

我使用这个不错的在线输入工具的结果[2, 50], [3, 35], [4, 25], [5, 20](5x^2-55x+190) / 2.

但老实说,对于这么少的值,我会使用一个开关 - 它可能更有效并且让您的代码易于理解(例如,如果您在一年左右查看它;-))。

希望有帮助。

*约斯特

于 2013-07-18T04:38:28.570 回答