计算出一个模式中的下一个数字

本文关键字:模式 下一个 数字 一个 计算 | 更新日期: 2023-09-27 18:00:24

如何用C#编程计算出模式中的下一个数字?例如,如果我有一个模式(3,6,9,12),我如何用程序计算出下一个数字是15,然后是21,依此类推?谢谢

计算出一个模式中的下一个数字

首先,您需要知道模式的类型,或者用程序来弄清楚。线性数字模式通过加法或减法增加。指数模式通过乘法或除法增加。有了这个,你必须从第一个数字开始,并确定差异。然后看下一个数字,看看它是否增加了同样的数量。如果是这样的话,你就有了模式,只需要把差值加到最后一个数字上。如果不是,它是一个指数函数,然后你需要确定它随着模式中每个数字的增加量,以投影下一个数字。

在看不到代码的情况下,我只能向您展示概念。希望它能有所帮助!你可能会发现这很有用。

该死,我的响应因无线故障而丢失。让我再试一次:

您可以将其作为RPN语言组合的广度优先搜索。从堆叠上的图案开始;忽略堆栈下溢,因为它们表明您处于序列种子。使用基本的运算符和个位数,在表达能力和不太大的搜索空间之间取得良好的平衡。例如(显然,在搜索空间中只显示一些有趣的点):

for +:
3 +: Stack Underflow - ignore
3 6 +: 9
3 6 9 +: 15 - wrong
for *:
3 *: SU
3 6 *: 18 - wrong
for 1:
3 1: 1 - wrong
for + -:
3 + -: SU
3 6 + -: SU
3 6 9 + -: -12 - wrong
for 3 +:
3 3 +: 6
3 6 3 +: 9
3 6 9 3 +: 12
success
next:
3 6 9 12 3 +: 15
3 6 9 12 15 3 +: 18

这将产生对序列的最简单解释。正如Samuel Edwin Ward所指出的,据我们所知,可能有一种复杂的算法会产生4作为下一个项目,或者"香蕉"。例如,这里的许多人会立即"知道"这个序列中的下一个术语:

1
2
"fizz"
4
?

(答案是,"显然","buzz",尽管该模式在示例中没有实际演示,只有我们的经验。)

EDIT:堆栈欠流,而不是溢出:/