Algorithm 模式和序列-Express';a';作为';n';

Algorithm 模式和序列-Express';a';作为';n';,algorithm,function,math,sequence,analysis,Algorithm,Function,Math,Sequence,Analysis,我有下面的模式。我想把a表示成n的函数 if n=0 then a=0 if n=1 then a=0 if n=2 then a=3 if n=3 then a=3 if n=4 then a=10 . . . if n=10 then a=10 if n=11 then a=29 . . . if n=29 then a=29 if n=30 then a=66 . . . if n=66 then a=66 if n=67 then a=127 . . 如您所见,a的值保持不变,直到

我有下面的模式。我想把a表示成n的函数

if n=0 then a=0
if n=1 then a=0
if n=2 then a=3
if n=3 then a=3
if n=4 then a=10
. 
.
.
if n=10 then a=10
if n=11 then a=29
.
.
. 
if n=29 then a=29
if n=30 then a=66
.
.
.
if n=66 then a=66
if n=67 then a=127
.
.

如您所见,
a
的值保持不变,直到
a
值与
n
匹配为止。之后
a
的值发生变化,该值再次保持,直到
a为止。您可以应用公式
n^3-2
的倒数,四舍五入,然后再次应用公式,以获得正确的顺序。但是,0、1和2的值必须硬编码

注意:在具有键入数字的语言中,请确保立方根的结果是浮点;如果它自动转换为int,则在转换过程中会向下舍入

函数计算(n){

如果(n你可以应用公式的倒数
n^3-2
,四舍五入,然后再次应用公式,以获得正确的序列。但是,0、1和2的值必须硬编码

注意:在具有键入数字的语言中,请确保立方根的结果是浮点;如果它自动转换为int,则在转换过程中会向下舍入

函数计算(n){

如果(n)对于n>10,a的值是多少?对于
n>10
n29
n,它又是1^3+2?@ZenWright“正如您所看到的,a的值保持不变,直到值与n匹配为止”与你给出的n和a的前四个例子相矛盾。或者我遗漏了什么?为什么序列以0而不是2开头?@RockSportRock是的,它与n=0和n=1相矛盾。所以我假设这些是基本情况。模式从n=2开始。a=1^3+2。所以a=3。当n=3时,a=3。当n=4时,a=2^3+2=10。然后对于n=4,5,6,7,8,9,10,a=10。W当n=11时,a=3^3+2=29。然后对于n=11到29,a=29对于n>10,a的值是多少?对于
n>10
n29
n,“可以看到,a的值保持不变,直到a的值与n匹配。”与你给出的n和a的前四个例子相矛盾。或者我遗漏了什么?为什么序列以0而不是2开头?@RockSportRock是的,它与n=0和n=1相矛盾。所以我假设这些是基本情况。模式从n=2开始。a=1^3+2。所以a=3。当n=3时,a=3。当n=4时,a=2^3+2=10。然后对于n=4,5,6,7,8,9,10,a=10。W当n=11时,a=3^3+2=29。然后对于n=11到29,a=29令人惊讶!非常感谢!看起来不错,但Math.ceil函数是一个离散函数,由于其参数的浮点计算中存在舍入误差,可能会导致某些值出现意外结果。即使使用高精度浮点,舍入误差也最小由于浮点精度有限,如果参数精确计算为整数,则会影响Math.ceil方法。为了解决这个问题,我会在应用Math.ceil之前从Math.pow的结果中减去一个非常小的数字。@StefanMondelaers在JavaScript中这是安全的,因为
Math.pow(Math.pow(n,3),1/3)
始终小于或等于n,但你是对的,你不能指望它总是正确的。我将在答案中添加一条注释。太棒了!非常感谢!看起来不错,但Math.ceil函数是一个离散函数,可能会因为浮点计算中的舍入错误而导致某些值的意外结果即使使用高精度浮点,由于浮点精度有限而可能出现的最小舍入误差也会对Math.ceil方法产生影响,如果参数精确计算为整数。为了解决这个问题,我会从Math.pow的结果中减去一个非常小的数在JavaScript中应用Math.ceil.@StefanMondelaers这是安全的,因为
Math.pow(Math.pow(n,3),1/3)
始终小于或等于n,但你是对的,你不能指望它总是正确的。我将在答案中添加一条注释。