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

C#生成斐波那契序列无法添加到ListBox项的问题咨询

代码问题及修正方案

以下是你代码中存在的问题,以及修复后的可运行代码:

现存问题

  • 数组长度初始化错误:你将数组长度设为了lbox.Items.Count,初始状态下列表为空,数组长度为0,for循环完全不会执行,自然无法添加项。正确应该用用户输入的序列长度quantity作为数组长度。
  • 合法性校验顺序错误:你先执行了txtseq.Text转int的操作,再判断文本框是否为空,若文本框为空第一步转类型就会抛出异常,应该先判断非空再做类型转换。
  • 循环内逻辑错误:你把array[0]和array[1]的赋值放到了循环体内部,每次循环都会被重置;且array[i] = array[i--] + array[i]中使用i--会修改循环变量i的值,会引发死循环或索引越界。
  • 项添加逻辑错误:每次循环都把0、1和当前位的值拼接添加,输出内容不符合斐波那契序列的展示要求。

修复后代码

private void btn_Click(object sender, EventArgs e)
{
    // 先校验输入非空
    if (txtseq.Text.Length <= 0)
    {
        MessageBox.Show("Insert something first");
        return;
    }

    int quantity = Convert.ToInt32(txtseq.Text);
    // 清空列表原有项
    lbox.Items.Clear();
    if (quantity <= 0) return;

    int[] array = new int[quantity];
    // 前两位单独赋值,放在循环外
    array[0] = 0;
    lbox.Items.Add(array[0].ToString());
    if (quantity == 1) return;

    array[1] = 1;
    lbox.Items.Add(array[1].ToString());
    if (quantity == 2) return;

    for (int i = 2; i < quantity; i++)
    {
        // 用i-1和i-2取前两位,不修改循环变量i
        array[i] = array[i - 1] + array[i - 2];
        lbox.Items.Add(array[i].ToString());
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:45:04