pythoncollatz猜想循环结构_循环和Collatz猜想

我有一个循环和声明变量的问题。目前我正在做一个关于Collatz猜想的程序,该程序应该检查从一定数量的Collatz序列到一个最大步骤是什么。我的代码是:start_num = int(input("insert a starting Number > "))

how_many = int(input("how many times you want to check? >"))

def even_or_odd(number):

if number % 2 == 0:

return 'isEven'

else:

return 'notEven'

def collatz(n):

z = n

counter = 0

while True:

if n != 1:

if even_or_odd(n) == 'isEven':

n = n/2

counter += 1

continue

if even_or_odd(n) == 'notEven':

n = (n*3)+1

counter += 1

continue

else:

print('number ' + str(z) + ' reached 1 with : ' + str(counter) + ' steps')

return counter

break

def check_biggest_steps(steps_before, steps_after):

if steps_before > steps_after:

return steps_before

if steps_after > steps_before:

return steps_after

if steps_after == steps_before:

return steps_after

def compute_collatz(n_times, collatz_number):

for _ in range(n_times):

before = collatz(collatz_number)

collatz_number += 1

after = collatz(collatz_number)

collatz_number += 1

biggest_steps = check_biggest_steps(before, after)

print('Biggest Steps is :' + str(biggest_steps))

compute_collatz(how_many, start_num)

此biggest_steps变量始终返回最后2个步骤。我知道导致这个问题的原因是biggest_step变量位于循环内,但是我不能让它在任何地方工作不知道该怎么做。谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值