傅彧 发表于 2021-8-24 13:53:32

第015 动动手 验证角谷猜想

角谷猜想的内容是:任意给定一个自然数,若它为偶数则除以 2,若它为奇数则乘以 3 再加 1,得到一个新的自然数,按照这样的方法计算下去,最终的结果必将是 1。
比如给定的自然数是5,则 5 * 3 + 1 = 16 -> 16 / 2 = 8 -> 8 / 2 = 4 -> 4 / 2 = 2 -> 2 / 2 = 1

答案代码如下:

n = int(input("请输入一个自然数:"))
for i in range(1000):
    if n%2==0:
      print(n,'/2=',n//2,sep='')
      n=n//2
    else:
      print(n,'*3+1=',n*3+1,sep='')
      n=n*3+1
    if n == 1:
      break

问题:“for i in range(1000):”,后面的代码没有提到“i”,为什么要在这里给“i”确定一个范围呢?

非常感谢!

逃兵 发表于 2021-8-24 14:09:12

为了让程序循环1000次,i相当于计数器

柿子饼同学 发表于 2021-8-24 14:17:59

这里相当于把下面的代码块循环运行 1000 次 , 当 i = 999 时 , 循环会停止运行
为什么是 999 , 因为 i 是从 0 开始的,相当于循环 1000 次

傅彧 发表于 2021-8-25 10:52:19

柿子饼同学 发表于 2021-8-24 14:17
这里相当于把下面的代码块循环运行 1000 次 , 当 i = 999 时 , 循环会停止运行
为什么是 999 , 因为 i 是 ...

谢谢哈

傅彧 发表于 2021-8-25 10:53:16

逃兵 发表于 2021-8-24 14:09
为了让程序循环1000次,i相当于计数器

谢谢哈
页: [1]
查看完整版本: 第015 动动手 验证角谷猜想