如何修改Python斐波那契代码,使其在数值超过指定阈值时停止输出
修改斐波那契数列生成逻辑:按阈值停止输出
原代码通过调用fib(n)生成第n个斐波那契数,再循环指定次数输出,无法根据数值阈值控制停止时机。以下是两种实现按阈值停止输出的方案:
方案一:高效迭代实现(推荐)
这种方式无需重复计算,一次迭代即可完成序列生成与判断:
def fib_until_threshold(threshold): a, b = 0, 1 while b <= threshold: print(b) a, b = b, a + b # 调用示例:设置阈值为10,输出到不超过10的最后一个斐波那契数 fib_until_threshold(10)
逻辑说明
- 初始化斐波那契序列的前两个数
a=0、b=1 - 使用
while循环判断当前待输出的数b是否小于等于设定阈值 - 输出
b后,更新a和b为序列的下一组数(a替换为原b,b替换为原a与b的和) - 当
b超过阈值时,循环自动终止,停止输出
方案二:基于原函数调整循环逻辑
如果想保留原fib(n)函数的结构,可以修改外层循环逻辑,通过判断每次生成的数值是否超过阈值来控制停止:
def fib(n): a = 0 b = 1 for k in range(n): c = b + a a = b b = c return a threshold = 10 x = 0 while True: current_num = fib(x) if current_num > threshold: break print(current_num) x += 1
注意事项
这种方式每次调用fib(x)都会重新计算从第0项到第x项的斐波那契数,当阈值较大时效率较低,因此更推荐方案一。
内容的提问来源于stack exchange,提问作者Borja Alamo
相关产品推荐
相关产品推荐

