如何实现函数循环迭代:从n=63开始执行f(n)直到结果为1的方法
代码修改方案
你当前的代码存在两处核心问题:
- 变量
q=63缩进错误,被放在了函数f的return语句之后,属于永远不会执行的死代码,且作用域在函数内部,while循环无法访问该变量 - while循环内仅打印了
f(q)的计算结果,没有将计算结果赋值回q,q的值永远为初始值,会进入死循环
修改后的完整代码
def f(n): if (n % 2) == 0: # 换成//可实现整数除法,避免返回浮点数结果 return n // 2 else: return (3 * n + 1) // 2 q = 63 while q != 1: # 先更新q的值 q = f(q) # 打印每次迭代的结果 print(q)
如果需要保留初始值63的打印,可以调整循环内的顺序:
q = 63 while q != 1: print(q) q = f(q) # 最后打印终止值1 print(1)
内容的提问来源于stack exchange,提问作者Mackenzie Watts
相关产品推荐
相关产品推荐

