C++ Stern-Brocot序列

C++ Stern-Brocot序列

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

Stern-Brocot序列,也被称为Stern氏二元序列,是以下方式生成的数字序列。

1, 1, 2, 1, 3, 2, 3, 1, 4, 3, 5, 2, 5, 3, …

虽然人们可能发现Stern-Brocot序列与Fibonacci序列0, 1, 1, 2, 3, 5, 8, 13, 21, 34, …相似。

Stern-Brocot序列与Fibonacci序列的不同之处在于Fibonacci序列的生成方法。在Fibonacci序列中,序列中的每个数字都恰好等于其前两个数字的总和。根据Fibonacci序列的规则,序列中的每个数字都是其前两个数字的和。例如,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序列的算法。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程