You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何实现斐波那契序列的去重选择性文件存储?

解决斐波那契序列重复保存问题

问题原因

你的代码中,当i=0、i=1、i=2时,fibonacci(i)返回的都是[0,1]——因为函数初始就创建了长度为2的序列,当len(sequence) >= n时会直接返回该序列,所以这三次循环生成的序列完全重复,导致文件中多次出现[0,1]。

解决方案一:用集合记录已保存序列

通过一个集合存储已经写入文件的序列字符串,每次生成序列后先检查是否已存在,仅保存未出现过的序列:

def fibonacci(n):
    sequence = [0, 1]  
    while len(sequence) < n:  
        next_number = sequence[-1] + sequence[-2]  
        sequence.append(next_number)  
    return sequence


n = 10
saved_sequences = set()  # 记录已保存的序列字符串

for i in range(0, n): 
    result = fibonacci(i)
    seq_str = str(result)
    if seq_str not in saved_sequences:
        # 仅当序列未保存过时才写入文件
        with open("Fibonacci.txt", 'a') as f: 
            f.write('\n' + seq_str)
        saved_sequences.add(seq_str)
    print(result)

解决方案二:调整循环范围

由于i<2时生成的都是重复的[0,1],可以手动先写入一次该序列,再从i=3开始循环生成后续不同长度的序列:

def fibonacci(n):
    sequence = [0, 1]  
    while len(sequence) < n:  
        next_number = sequence[-1] + sequence[-2]  
        sequence.append(next_number)  
    return sequence


n = 10
# 先写入唯一的[0,1],用'w'模式清空文件避免残留内容
with open("Fibonacci.txt", 'w') as f:
    f.write(str([0,1]))

# 从i=3开始,生成长度3到10的序列
for i in range(3, n+1): 
    result = fibonacci(i)
    with open("Fibonacci.txt", 'a') as f: 
        f.write('\n' + str(result))
    print(result)

两种方案都能得到你期望的无重复序列文件,第一种更通用(比如后续函数逻辑修改后仍能避免重复),第二种更直接高效。

内容的提问来源于stack exchange,提问作者KeplerNick123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 16:20:38