Python中的冰雹序列

云课堂学Python 2024-04-09 01:43:10

冰雹序列由冰雹猜想生成。也被称为克拉茨猜想、3n+1猜想,因为由一个日本人传入中国,又称为谷角猜想。这是数学家克拉茨提出的一个问题。它之所以被称为冰雹序列,因为该序列类似于冰雹的形成模式,序列中的数值交替增加或减少。我们可以从一个任意整数开始。一个给定的数字 N。如果数字 N 是偶数,我们将它除以 2。否则,如果 N 是奇数,则将 N 乘以 3 并加 1 。无论我们从哪个数字开始,序列永远不会是无限的,总是以 4、2、1 结束。

冰雹序列示例

「N = 5」

N 是奇数,3*5+1 = 16;

16 是偶数,16/2 = 8;

8 是偶数,8/2 = 4;

4 是偶数,4/2 = 2;

2 是偶数,2/2 = 1

如果 按照 1 是奇数,3*1+1 = 4。 又回到了 4,序列会无限重复 4,2,1,所以序列到此为止。

因此,N = 5 的冰雹序列是:

[5, 16, 8, 4, 2, 1]

「N = 10」

N 是偶数,10/2 = 5;

5 是技术,3*5+1 = 16;

16 是偶数,16/2 = 8;

8 是偶数,8/2 = 4;

4 是偶数,4/2 = 2;

2 是偶数,2/2 = 1

N = 6 的冰雹序列为 :

[10, 5, 16, 8, 4, 2, 1]

使用 while循环输出冰雹序列

定义一个函数 Bb(),使用选择结构进行判断奇偶,按照冰雹列规则计算下一个数,循环执行,直到输出 1。

def Bb(n): Bb_list = [] Bb_list.append(n) while n != 1: if n % 2 == 0: n = n/2 Bb_list.append(int(n)) else: n = 3*n+1 Bb_list.append(int(n)) return Bb_listn = int(input("请输入一个整数:"))print(Bb(n))# 运行结果:请输入一个整数:10[10, 5, 16, 8, 4, 2, 1]使用递归输出冰雹序列

定义一个递归函数 Bb(),使用选择结构进行判断奇偶,按照冰雹列规则计算得到的下一个数作为函数参数递归调用,直到输出 1。

Bb_list = []def Bb(n): Bb_list.append(n) if n == 1: return Bb_list while n != 1: if n % 2 == 0: return Bb(int(n/2)) else: return Bb(3*n+1)n = int(input("请输入一个整数:"))print(Bb(n))# 运行结果:请输入一个整数:10[10, 5, 16, 8, 4, 2, 1]

文章创作不易,如果您喜欢这篇文章,请关注、点赞并分享给朋友。如有意见和建议,请在评论中反馈!

0 阅读:0

云课堂学Python

简介:感谢大家的关注