C++ 中的 Geek-onacci 数2025年5月23日 | 阅读 7 分钟 Geek-onacci 数 是斐波那契数列的一个变体,通常作为一个编程挑战引入。在这个数列中,前三项是给定的,后续的每一项都是由前三项之和计算得出的。它允许探索递归、迭代和动态规划的概念。 说明初始项: Geek-onacci 数列的前三个数字是明确给出的,通常作为输入。我们称它们为 G1、G2 和 G3。 递推关系: 对于数列中任何一个大于 3 的数 Gn,它的计算方法是:
这意味着每一项都是其前面三项的总和。 示例: 假设前三项是
那么数列将是:
方法 1:简单方法程序输出 Enter G1, G2, G3: 1 2 3 Enter the value of N: 5 The 5th Geek-onacci number is: 11 说明1. 代码目的
2. 输入说明 程序接受四个输入:
3. 先处理简单情况 程序检查 N 是否为 1、2 或 3。
这是因为这些项已经作为输入提供,无需计算。 4. N>3 的迭代计算 如果 N 大于 3,程序将使用一个循环来计算从第 4 位到 N 位的所有项。 循环中的步骤: 初始化前三项
计算下一项
移位项 计算出新项后,程序会更新最后三项的值:
重复直到 N
输出结果 循环结束后,term3 的值将包含位置 N 的 Geek-onacci 数。然后程序将打印此结果。 6. 示例演练 让我们举一个例子:G1=1、G2=2、G3=3,N=6。 初始项:term1 = 1, term2 = 2, term3 = 3。 从 i=4 开始循环。 步骤 1: current=1+2+3=6
步骤 2: current=2+3+6=11
步骤 3: current=3+6+11=20
循环结束后,term3 = 20 是位置 N=6 的 Geek-onacci 数。 复杂度分析时间复杂度 该程序的时间复杂度为 O(N)。
空间复杂度 该程序的空间复杂度为 O(1)。
方法 2:使用滑动窗口技术的动态规划此方法将最后三项存储在一个数组中,并进行迭代更新。虽然与前一种方法类似,但它以不同的方式构建计算,以提高清晰度和模块化。 程序输出 Enter G1, G2, G3: 1 2 3 Enter the value of N: 6 The 6th Geek-onacci number is: 20 说明1. 代码目的 该程序计算位置 N 的 Geek-onacci 数。Geek-onacci 数列类似于斐波那契数列,但它使用最后三个数字的总和来计算下一个数字。 2. 程序输入 程序会询问四个输入:
3. 先处理简单情况 如果 N 是 1、2 或 3,则答案直接是初始项之一。
程序会直接返回这些值,而无需进行任何进一步计算,因为这些项已提供。 4. 使用数组存储项 对于大于 3 的位置,程序使用一个名为 terms 的大小为 3 的数组。
5. 循环计算项 程序使用循环计算从 4 到 N 的所有项。
6. 返回结果
7. 示例演练 让我们举一个例子:
初始状态 terms = [1, 2, 3]。 循环计算:
最终结果
复杂度分析时间复杂度
空间复杂度
下一个主题生成一对数中相邻素数序列-cpp |
引言 快速行进法 (FMM) 是一种计算方法,在应用于 Eikonal 方程时显示出巨大的优势,该方程用于涉及波传播、计算机视觉、水力学甚至医学成像的各种应用。Sethian J.A. 引入的一些新颖方法...
阅读 16 分钟
在本文中,我们将讨论 C++ 中的 multimap size() 函数。但在了解 size() 函数之前,我们必须了解 multimap。Multimap 是 C++ 中的一个排序容器,存在于标准模板库中。通常,map 存储键值对...
阅读 3 分钟
在本文中,我们将讨论如何在 C++ 中检查一个数字是否为 Quartan Prime。Quartan Prime 是一种特殊的素数形式,通过分析素数与数字的关系而得出……
5 分钟阅读
在本文中,我们将讨论 C++ 中模板和继承之间的区别。在讨论它们的区别之前,我们必须了解模板和继承及其特性和局限性。什么是模板?模板是函数或类的蓝图或结构。库...
阅读 6 分钟
在本文中,我们将讨论其方法、示例、时间复杂度和空间复杂度。康托尔集模式:线段的中间三分之一被反复移除,以产生三元康托尔集,一种分形结构。该过程从单个线段开始,... ...
阅读 4 分钟
在本文中,我们将讨论。什么是有害数?如果一个数是正数,并且其二进制展开中的置位比特数量是素数,那么该数就被认为是“有害数”。3 是第一个有害数,因为它等于 (11) 2....
阅读 4 分钟
在本文中,我们将讨论 C++ 和 Julia 之间的区别。C++ 和 Julia 都是强大的编程语言。它们在设计理念、语法、性能和应用场景方面都有各自的优缺点。对语法、易用性、库的理解...
阅读 4 分钟
八十边形数组由具有 80 条边的多边形的形数组成。八十边形数属于此类多边形的系列,即三角形、正方形等。这些数字中的数学和视觉模式也可以通过...进行解释。
7 分钟阅读
问题描述:本问题中的起始基因字符串和结束基因字符串均为八个字符长,由“A”、“C”、“G”和“T”组成。此外,我们还有一个合法的基因突变库。一个基因必须存在于库中……
5 分钟阅读
在面向对象编程中,特别是在 C++ 中,类充当创建对象的蓝图,这些对象封装数据以及对这些数据进行的操作。一个类通常由成员变量(属性)和成员函数(方法)组成,这些成员函数定义了从该类实例化的对象的行为。然而,在...
阅读 15 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India