如何不使用列表,按指定每行数量打印斐波那契数列?
解决斐波那契数列按指定行数打印的问题
方法一:先收集数列再分批打印
这种方法先把所有符合条件的斐波那契数存入列表,再按指定数量切片打印,逻辑清晰,适合需要后续复用数列的场景:
# 收集1到150之间的斐波那契数 fib_numbers = [] a, b = 1, 1 while b < 150: fib_numbers.append(b) a, b = b, a + b # 设置每行打印的数字数量 per_line = 5 # 按每per_line个数字为一组打印 for i in range(0, len(fib_numbers), per_line): # 把每组数字转成字符串并用空格连接,再打印 print(' '.join(map(str, fib_numbers[i:i+per_line])))
方法二:生成时直接计数换行
这种方法不需要额外存储整个数列,边生成边打印,节省内存,适合处理大数据量的场景:
a, b = 1, 1 count = 0 per_line = 5 while b < 150: # 打印数字,末尾用空格分隔而非默认换行 print(b, end=' ') count += 1 # 每打印per_line个数字就换行 if count % per_line == 0: print() a, b = b, a + b # 处理最后一行不足per_line个的情况,补换行(可选) if count % per_line != 0: print()
原代码问题说明
你原来的代码中print(b, "\n")会让每个数字后都输出换行符,导致每个数字单独占一行。要实现按指定数量换行,需要控制换行的时机,而不是每个数字都强制换行。上面两种方法分别通过批量处理或计数判断来实现这一点。
内容的提问来源于stack exchange,提问作者Andrei360
相关产品推荐
相关产品推荐

