目录
0 原始题目:大衍数列
0.1 原始题目
0.2 知识点
1 大衍数列
1.1 大衍数列定义
1.1.1 大衍数列定义
1.1.2 大衍数列注意点
1.2 用VBA实现大衍数列
1.3 用python实现大衍数列
2 斐波拉契数列 /兔子数列/ 黄金分割数列
2.1 斐波拉契数列定义
2.1.1 下面来自百度百科
2.1.2 斐波那契数列注意点
2.2 斐波那契数列,用VBA解题
2.3 斐波那契数列,用python解题
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代码
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开始
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代码
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写法
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个常见的数列:
斐波那契数列:每个数字是前两个数字之和,起始于0和1(0, 1, 1, 2, 3, 5, 8, 13, 21, 34…)。
等差数列:每个数字与前一个数字之间的差值相等(例如:1, 3, 5, 7, 9…)。
等比数列:每个数字与前一个数字之间的比值相等(例如:2, 4, 8, 16, 32…)。
质数数列:仅包含质数(素数)的数列(例如:2, 3, 5, 7, 11, 13, 17, 19, 23…)。
平方数数列:每个数字是一个完全平方数(例如:1, 4, 9, 16, 25, 36, 49, 64, 81…)。
等差平方数数列:每个数字是一个等差数列中的完全平方数(例如:1, 4, 9, 16, 25, 36, 49…)。
卡塔兰数列:用于计算组合问题的数列(例如:1, 1, 2, 5, 14, 42, 132…)。
自然对数数列:每个数字是自然对数的递增序列(例如:0, 1, 2.71828, 4.71828, 6.71828…)。
调和数列:每个数字是调和级数的递增序列(例如:1, 1.5, 1.83333, 2, 2.28333…)。
斯特灵数列:用于近似计算阶乘的数列(例如: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]: