Stern-Brocot 序列


本文旨在实现一个打印 Stern-Brocot 序列的程序。

什么是 Stern-Brocot 序列?

Stern-Brocot 序列,也称为斯特恩二元数列,是一个按如下方式生成的数字序列。

1, 1, 2, 1, 3, 2, 3, 1, 4, 3, 5, 2, 5, 3, ...

虽然人们可能会发现 Stern-Brocot 序列与斐波那契数列 0、1、1、2、3、5、8、13、21、34……非常相似。

Stern-Brocot 序列与斐波那契数列在生成方法上有所不同。在斐波那契数列中,数列中的每个数字都完全等于它前面两个数字的总和。根据斐波那契数列的规则,序列中的每个数字都是它前面两个数字的和。例如,0+1=1,1+1=2,1+2=3,2+3=5,3+5=8,5+8=13,依此类推。

现在回到 Stern-Brocot 序列,这里我们不仅考虑像斐波那契数列那样数字的和,还考虑更多。我们已在下面详细说明了 Stern-Brocot 序列是如何生成的。因此,为了更深入地了解 Stern-Brocot 序列,让我们深入研究本文。

问题陈述

实现一个打印 Stern-Brocot 序列的程序。

解释

序列的第一个和第二个元素是 1

[1, 1]

现在考虑序列的第二个元素。

将序列的该元素与其前一个元素相加,然后将其附加到序列的末尾:(即 1 + 1= 2)

[1, 1, 2]

将序列的该元素放在序列的末尾

[1, 1, 2, 1]

选择序列的下一个元素(即 2)

将其与它的前一个元素相加,然后将其附加到序列的末尾:(即 2+1=3)

[1, 1, 2, 1, 3]

将该元素放在序列的末尾

[1, 1, 2, 1, 3, 2]

接下来要考虑的元素是第 4 个元素(即 1)

将其与它的前一个元素相加,然后将其附加到序列的末尾:(即 1+2=3)

[1, 1, 2, 1, 3, 2, 3]

将该元素放在序列的末尾

[1, 1, 2, 1, 3, 2, 3, 1]

序列以此类推,接下来要考虑的元素是第 5 个元素。也就是 3。

因此,序列是这样的:1、1、2、1、3、2、3、1、4、3、5、2、5、3……

算法

步骤 1:开始。

步骤 2:定义 n1=1,n2=1,n3,i 和 number。

步骤 3:为 number 赋值。

步骤 4:运行循环。

步骤 5:将 n1 和 n2 相加并将值赋给 n3。

步骤 6:打印 n3 和 n2。

步骤 7:更新 n1 和 n2 的值。

步骤 8:继续循环直到停止。

步骤 9:停止。

下面给出了一个打印 Stern-Brocot 序列的 C 程序

示例

#include<stdio.h>
int main(){
   int n1=1, n2=1,  n3, i, number=9;
   printf("Stern-Brocot Sequence:");
   printf("\n%d %d",n1,n2);//printing 1 and 1
   for(i=2; i<number; i++) {
      n3=n1+n2;
      printf(" %d",n3);
      printf(" %d",n2);
      n1=n2;
      n2=n3;
   }
   return 0;
}    

输出

执行后,它将产生以下输出

Stern-Brocot Sequence:
1 1 2 1 3 2 5 3 8 5 13 8 21 13 34 21

结论

同样,我们可以通过输入要打印的元素的限制来打印 Stern-Brocot 序列。

本文解决了获取 Stern-Brocot 序列的挑战。这里提供了 C 编程代码以及打印 Stern-Brocot 序列的算法。

更新于:2023 年 8 月 23 日

283 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告