【题目2】 大衍数列,斐波拉契数列等,用VBA 和python解决

目录

[0 原始题目:大衍数列](#0 原始题目:大衍数列)

[0.1 原始题目](#0.1 原始题目)

[0.2 知识点](#0.2 知识点)

[1 大衍数列](#1 大衍数列)

[1.1 大衍数列定义](#1.1 大衍数列定义)

[1.1.1 大衍数列定义](#1.1.1 大衍数列定义)

[1.1.2 大衍数列注意点](#1.1.2 大衍数列注意点)

[1.2 用VBA实现大衍数列](#1.2 用VBA实现大衍数列)

[1.3 用python实现大衍数列](#1.3 用python实现大衍数列)

[2 斐波拉契数列 /兔子数列/ 黄金分割数列](#2 斐波拉契数列 /兔子数列/ 黄金分割数列)

[2.1 斐波拉契数列定义](#2.1 斐波拉契数列定义)

[2.1.1 下面来自百度百科](#2.1.1 下面来自百度百科)

[2.1.2 斐波那契数列注意点](#2.1.2 斐波那契数列注意点)

[2.2 斐波那契数列,用VBA解题](#2.2 斐波那契数列,用VBA解题)

[2.3 斐波那契数列,用python解题](#2.3 斐波那契数列,用python解题)

[3 其他常见有意思的数列题目 (暂存资料备忘)](#3 其他常见有意思的数列题目 (暂存资料备忘))


0 原始题目:大衍数列

0.1 原始题目

大衍数列-蓝桥杯-基础-CSDN算法技能树CSDN大衍数列社区,大衍数列论坛,为中国软件开发者打造学习和成长的家园https://edu.csdn.net/skill/algorithm/algorithm-12a6edfcdbb9460d8ec505301b388717?category=188

贡献者:CSDN-Ada助手

中国古代文献中,曾记载过"大衍数列", 主要用于解释中国传统文化中的太极衍生原理。

它的前几项是:0、2、4、8、12、18、24、32、40、50 ...

其规律是:对偶数项,是序号平方再除2,奇数项,是序号平方减1再除2。

以下的代码打印出了大衍数列的前 100 项。

请填补空白处的内容。

#include <stdio.h>
int main()
{
    int i;
    for (i = 1; i <= 100; i++)
    {
        if (__________________)
            printf("%d ", i * i / 2);
        else
            printf("%d ", (i * i - 1) / 2);
    }
    printf("\n");
}

0.2 知识点

VBA里

  • 除法,/ ,获得商,总是浮点数
  • 取余, mod ,获得余数
  • 整除,\ 反斜杠,获得商的整数部分

python里

  • 除法,/ ,获得商的精确值,总是浮点数
  • 取余, % ,获得余数
  • 整除,//,获得商的整数部分

1 大衍数列

1.1 大衍数列定义

1.1.1 大衍数列定义

中国古代文献中,曾记载过"大衍数列", 主要用于解释中国传统文化中的太极衍生原理。

它的前几项是:0、2、4、8、12、18、24、32、40、50 ...

其规律是:对偶数项,是序号平方再除2,奇数项,是序号平方减1再除2。

1.1.2 大衍数列注意点

  • 注意大衍数列是从1开始,而不是从0开始

1.2 用VBA实现大衍数列

VBA代码

vbscript 复制代码
Function dayan1(n)   '大衍数列

    If n Mod 2 = 0 Then
        dayan1 = (n * n) / 2
    Else
        dayan1 = (n * n - 1) / 2
    End If
End Function

'输出第几个
Sub test3()
    Debug.Print dayan1(5)
End Sub

'输出前n个
Sub test4()
    For i = 1 To 10
        Debug.Print dayan1(i);
    Next i
End Sub

测试

1.3 用python实现大衍数列

  • 注意大衍数列是从1开始,而不是从0开始
python 复制代码
def dayan1(n):
    if n % 2==0:
        return (n**2)/2  
    else:
        return (n**2-1)/2 
#输出单个值
print(dayan1(5))

#输出整个序列
#for i in range(11):               #这样会包含0,不适合大衍数列
#for i in [1,2,3,4,5,6,7,8,9,10]:  #这样不包含0
for i in range(1 , 11):            #这样不包含0  
    print(dayan1(i),end=",")

2 斐波拉契数列 /兔子数列/ 黄金分割数列

2.1 斐波拉契数列定义

2.1.1 下面来自百度百科

斐波那契数列,也称为黄金分割数列或兔子数列,是一个著名的数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入。这个数列的特点是从第三项开始,每一项都等于前两项之和。其递推关系为F(0)=1,F(1)=1,F(n)=F(n-1)+F(n-2),其中n≥2且n为自然数。

斐波那契数列在数学、物理、计算机科学等领域有着广泛的应用,其与黄金分割率密切相关,因此在艺术和自然界中也有所体现。例如,许多植物的生长模式、花朵的花瓣数量、甚至自然界中一些贝壳的纹理都体现了斐波那契数列的规律。

2.1.2 斐波那契数列注意点

  • 注意斐波那契数列是从0开始,而不是从1开始
  • 斐波那契数列是兔子数列,前2个数都是1,而不是0,1

2.2 斐波那契数列,用VBA解题

VBA代码

vbscript 复制代码
Function Fibonacci1(n)   'Fibonacci1数列,兔子数列

    If n = 1 Then
        Fibonacci1 = 1
    ElseIf n = 2 Then
        Fibonacci1 = 1
    Else
        Fibonacci1 = Fibonacci1(n - 1) + Fibonacci1(n - 2)
    End If
End Function

'输出第几个
'列出斐波拉契的第n个内容
Sub test1()
    Debug.Print Fibonacci1(5)
End Sub

'输出前n个
'列出斐波拉契的第n为止的全部内容
Sub test2()
    For i = 1 To 10
        Debug.Print Fibonacci1(i);
    Next i
End Sub

测试情况

2.3 斐波那契数列,用python解题

python代码

注意点

  • 函数返回值
  • python使用return
  • fibonacci1=n 这是VBA写法
python 复制代码
def fibonacci1(n):
    if n<=1:
        return 1 
    else:
        return fibonacci1(n-1)+fibonacci1(n-2) 

#输出单个值
print(fibonacci1(5))

#输出整个序列
for i in range(11):
    print(fibonacci1(i),end=",")

测试情况

3 其他常见有意思的数列题目 (暂存资料备忘, 太多了。。。)

问的C站的AI

当谈到著名的数列时,以下是10个常见的数列:

  1. 斐波那契数列:每个数字是前两个数字之和,起始于0和1(0, 1, 1, 2, 3, 5, 8, 13, 21, 34...)。

  2. 等差数列:每个数字与前一个数字之间的差值相等(例如:1, 3, 5, 7, 9...)。

  3. 等比数列:每个数字与前一个数字之间的比值相等(例如:2, 4, 8, 16, 32...)。

  4. 质数数列:仅包含质数(素数)的数列(例如:2, 3, 5, 7, 11, 13, 17, 19, 23...)。

  5. 平方数数列:每个数字是一个完全平方数(例如:1, 4, 9, 16, 25, 36, 49, 64, 81...)。

  6. 等差平方数数列:每个数字是一个等差数列中的完全平方数(例如:1, 4, 9, 16, 25, 36, 49...)。

  7. 卡塔兰数列:用于计算组合问题的数列(例如:1, 1, 2, 5, 14, 42, 132...)。

  8. 自然对数数列:每个数字是自然对数的递增序列(例如:0, 1, 2.71828, 4.71828, 6.71828...)。

  9. 调和数列:每个数字是调和级数的递增序列(例如:1, 1.5, 1.83333, 2, 2.28333...)。

  10. 斯特灵数列:用于近似计算阶乘的数列(例如:1, 1.5, 1.66667, 1.875, 2...)。

递推数列

递推数列是可以递推找出规律的数列,找出这个规律的通项式就是解递推数列。求递推数列通项公式的常用方法有:公式法、累加法、累乘法、待定系数法等共十种方法。

问题三:猴子分桃 1979年,李政道博士给中国科技大学少年班出过一道智趣题: 5只猴子分一堆桃子,怎么也不能分成5等份,只好先去睡觉,准备第二天再分。夜里1只猴子偷偷爬起来,先吃掉一个桃子,然后将其分成5等份,藏起自己的一份就去睡觉了;第2只猴子又爬起来,吃掉一个桃子后,也将桃子分成5等分,藏起自己的一份睡觉去了;以后的3只猴子都先后照此办理。问最初至少有多少个桃子?最后至少剩下多少个桃子?

汉诺塔

3、Look-and-say 数列

Look-and-say 数列是数学中的一种数列,它的名字就是它的推导方式:给定第一项之后,后一项是前一项的发音。

4、帕多瓦数列

帕多瓦数列是由帕多瓦总结而出的。它的特点为从第四项开始,每一项都是前面2项与前面3项的和。

5、卡特兰数

卡特兰数是组合数学中一个常出现在各种计数问题中的数列。以比利时的数学家欧仁·查理·卡塔兰 (1814--1894)的名字来命名。

卡特兰数是组合数学中一个常出现于各种计数问题中的数列。以中国蒙古族数学家明安图和比利时数学家欧仁·查理·卡特兰的名字命名,其前几项为(从第0项开始):1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 24466267020, 91482563640, 343059613650, 1289904147324, 4861946401452, ...

卡特兰数满足以下递推关系 [2]:

相关推荐
肥猪猪爸2 分钟前
使用卡尔曼滤波器估计pybullet中的机器人位置
数据结构·人工智能·python·算法·机器人·卡尔曼滤波·pybullet
readmancynn14 分钟前
二分基本实现
数据结构·算法
萝卜兽编程17 分钟前
优先级队列
c++·算法
盼海24 分钟前
排序算法(四)--快速排序
数据结构·算法·排序算法
一直学习永不止步40 分钟前
LeetCode题练习与总结:最长回文串--409
java·数据结构·算法·leetcode·字符串·贪心·哈希表
Rstln1 小时前
【DP】个人练习-Leetcode-2019. The Score of Students Solving Math Expression
算法·leetcode·职场和发展
芜湖_2 小时前
【山大909算法题】2014-T1
算法·c·单链表
珹洺2 小时前
C语言数据结构——详细讲解 双链表
c语言·开发语言·网络·数据结构·c++·算法·leetcode
几窗花鸢2 小时前
力扣面试经典 150(下)
数据结构·c++·算法·leetcode
.Cnn2 小时前
用邻接矩阵实现图的深度优先遍历
c语言·数据结构·算法·深度优先·图论