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 序列的算法。