Algorithm 一种简单的递增数学算法

Algorithm 一种简单的递增数学算法,algorithm,Algorithm,我确实尝试过搜索这个,我确信这个基本算法在互联网上,CS教科书上随处可见,但是我找不到合适的词来搜索它 我想从这个算法中得到的是写“A”和“B”,限制总是增加2。就像我想让它写3次A,5次B,7次A,9次B,依此类推。我计划总共有100个元素 比如:aaabbbbaaaabbbbbbbbbb 我只想对从1到100的整个100个元素使用一个“for循环”。只需通过“if/else if/else”直接/排序“A”和“B” 我只是想了解它背后的基本数学算法,通过任何编程语言来展示它会更好,或者把我引

我确实尝试过搜索这个,我确信这个基本算法在互联网上,CS教科书上随处可见,但是我找不到合适的词来搜索它

我想从这个算法中得到的是写“A”和“B”,限制总是增加2。就像我想让它写3次A,5次B,7次A,9次B,依此类推。我计划总共有100个元素

比如:aaabbbbaaaabbbbbbbbbb

我只想对从1到100的整个100个元素使用一个“for循环”。只需通过“if/else if/else”直接/排序“A”和“B”


我只是想了解它背后的基本数学算法,通过任何编程语言来展示它会更好,或者把我引向这样的主题也会更好

在js中,您可以从以下内容开始:

$res ="";

  count2 = 0;
for (i=2;i<100; i = i+2) {
  count = 0;
  alert(i);
  while (count < i ) {

    $res = $res.concat(String.fromCharCode(65+count2));
    count++;
  }
  count2++;
}

alert ($res);
$res=”“;
count2=0;

对于(i=2;i您可以这样做:
可能会有较短的答案,但我觉得这一个很容易理解。
基本上,您保留一个bool变量,它将告诉您是轮到
a
还是
B
s。然后我们保留一个变量
开关
,它将告诉我们什么时候应该在它们之间切换。
时间
会随着我们需要打印下一个字符的重复次数而更新

A_B = true
times = 3   // 3,5,7,9,...
switch = 3  // 3,8,15,24,...
for (i from 1 to 100)
    if (A_B)
        print 'A'
    else
        print 'B'
    if (i == switch)
        times += 2
        switch += times
        A_B = !A_B

Python:

for n in range(1, 101):
    print "BA"[(int(sqrt(n)) % 2)],
整数平方根的奇偶性遵循这种模式。(想想
(n+1)²-n²=2n+1


如果您希望避免平方根,那么使用一个表示整数平方根的额外变量并保持更新就足够了

r= 1
for n in range(1, 101):
    if r * r <= n:
        r+= 1 
    print "AB"[r % 2],
r=1
对于范围(1101)内的n:

如果r*r以3、5、7等递增长度获得100组A和B,则可以运行以下Python代码:

''.join(('B' if i % 2 else 'A') * (2 * i + 3) for i in range(100))
输出为10200个字符的字符串

如果希望输出只有100个字符,可以使用:

import math
''.join(('B' if math.ceil(math.sqrt(i)) % 2 else 'A') for i in range(2, 102))

这是您可以在此页面上测试的代码段。这是一个总共500个字母的示例,当然您可以修改100个字母。您可以以相同的方式更改常量以生成许多不同的字符串,这是非常灵活的

var-toRepeat=['A','B'];
var结果='',j,i=3;
var总和=i;
var计数器=0;
而(总和<500){
j=计数器%2;
结果=结果+重复[j]。重复(i);
sum=sum+i;
i=i+2;
计数器++;
}
document.getElementById('hLetters')。innerHTML=result;
console.log(结果);

repeat\u times=repeat\u times+2,不是最简单的解决方案?有一个计数器,使用模数,如果其他的话你不需要。感谢你的回复,你能给我一个简单的例子来说明你在一个简单的代码片段中的建议吗?如何使用模数来区分相同的奇数,我应该用哪个数字来修改计数器?这是一个不应该有特定名称的基本过程(它甚至可以被称为算法吗?@YvesDaoust,它可以。也不要小看我亲爱的TBT命名的数学问题。@DolphinEugene请看下面我用JavaScript给出的答案,供您在本页上测试,没有
如果
:),但它不会显示为3A和97B吗?我从你的代码中理解的是,只要A_B是第一次陈述时的状态,它就会保持显示A。但是当我到了3时,下面的ot her if会使它成为A_B=不是A_B,并且一直保持这种状态,直到循环结束。@DolphinEugene我对它做了一些修改,使它更清楚。每当
i
达到
switch
的值时,我们就在
A
B
之间切换。然后,我们将更新
开关
到下一次我们应该再次切换。当我为1时,它打印A,因为当我为2时A_B为真,它打印A,因为当我为3时A_B为真,它首先打印A,然后它变为等于开关,将“次数”从3增加到5。并增加“开关”、“次数”更多。当我4岁的时候,A_B是假的,因为A_B现在是假的,而且一直是假的。以后不会有任何更改,因此代码会让它再次编写。它卡在“else”上,
i==switch
不在
else
块内的部分。当上次我们将
开关更新为8时,当
i
为8时,它将再次输入
if(i==开关)
。在这里的所有代码/建议中,你的是最简单但最有效的,做了我想做的。谢谢@A.SaridI不想特别地获得整个字符,因为我所期望的是不会写入字符,但我可以以如此不同的方式使用它。这只是一个开始的示例。使用您的语言修改此代码并获得预期结果。我提取了一个字符串,并在警报中显示,以便在plnkr^^100个元素上测试我的函数?我不知道如何在“”中区分AB,就像我不明白它如何写aaabbbb而不是ABABABABAB,或者它是Phython的函数一样?@DolphinEugene:array index。(你可以相信代码,它是真实的。)